52 lines
1 KiB
C
52 lines
1 KiB
C
|
/* 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
|