Import the initial code of the population library.
[libpopulation.git] / src / population.h
1 #ifndef POPULATION_H
2 #define POPULATION_H 1
3
4 #include <stdint.h>
5 #include <sys/types.h>
6
7 /*
8  * Callback function types
9  * (pi == population individual)
10  */
11 typedef int   (*pi_rate_f) (const void *);
12 typedef void *(*pi_copy_f) (const void *);
13 typedef void  (*pi_free_f) (void *);
14
15 /*
16  * (Opaque) data types
17  */
18 struct population_s;
19 typedef struct population_s population_t;
20
21 /*
22  * Constructor and destructor
23  */
24 population_t *population_create (pi_rate_f rate, pi_copy_f copy, pi_free_f f);
25 void population_destroy (population_t *p);
26
27 /*
28  * Object configuration
29  */
30 int population_set_size (population_t *p, size_t population_size);
31
32 /*
33  * Methods
34  */
35 /* iterations == 0  =>  infinite */
36 void *population_get_random (population_t *p);
37 void *population_get_fittest (population_t *p);
38
39 int population_insert (population_t *p, void *pi);
40
41 /* vim: set sw=2 sts=2 et : */
42 #endif /* POPULATION_H */