m2.alobe/src/degenerator.h

52 lines
1 KiB
C
Raw Normal View History

/* vim: set sw=4 ts=4 si et: */
#ifndef _DEGENERATOR_H
#define _DEGENERATOR_H
#include "config.h"
#include "store.h"
#include "list.h"
typedef enum {
DEGENERATOR_SELECT_RANDOM = 0,
DEGENERATOR_SELECT_MAX_DEG = 1
} Degenerator_select_mode_t;
typedef struct _Degenerator_t {
Config_io_t * _io;
int _iterations;
int _iterations_offset;
Store_t * _store;
nodeindex_t _size;
Degenerator_select_mode_t _select_mode;
} Degenerator_t ;
typedef nodeindex_t (* Degenerator_select_fun_t)(Degenerator_t * degenerator);
Degenerator_t * degenerator_create (Config_io_t * io, nodeindex_t n_count, int iterations);
void degenerator_destroy (Degenerator_t * distance);
nodeindex_t degenerator_select_random (Degenerator_t * degenerator);
nodeindex_t degenerator_select_max_deg (Degenerator_t * degenerator);
static Degenerator_select_fun_t degenerator_select_mode_table[] = {
degenerator_select_random,
degenerator_select_max_deg
};
void degenerator_set_select_mode (Degenerator_t * degenerator, Degenerator_select_mode_t mode);
#endif