5ca782e8b1
git-svn-id: https://websvn.glenux.net/svn/Upoc/alobe/trunk@1348 eaee96b3-f302-0410-b096-c6cfd47f7835
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
|