version 1.4.39b
[polyglot.git] / option.h
1 \r
2 // option.h\r
3 \r
4 #ifndef OPTION_H\r
5 #define OPTION_H\r
6 \r
7 // includes\r
8 \r
9 #include "util.h"\r
10 #include "ini.h"\r
11 \r
12 // defines\r
13 \r
14 #define VarNb    16\r
15 #define XBOARD   (1<<0)\r
16 #define UCI      (1<<1)\r
17 #define PG       (1<<2)\r
18 #define OptionNb 256\r
19 \r
20 // types\r
21 \r
22 typedef struct {   // TODO: put back in more logical order\r
23     const char * name;\r
24     const char * type;\r
25     const char * min;\r
26     const char * max;\r
27     const char * default_;\r
28     const char * value;\r
29     int var_nb;\r
30     const char * var[VarNb];\r
31     int mode;\r
32 } option_t;\r
33 \r
34 // all non NULL data in an option_list_t should be malloc'ed\r
35 // use "my_string_set" to fill it. \r
36 \r
37 typedef struct {\r
38     option_t options[OptionNb];\r
39     int option_nb;\r
40     int iter;\r
41 } option_list_t;\r
42 \r
43 // variables\r
44 \r
45 extern option_list_t Option[1];\r
46 \r
47 // functions\r
48 \r
49 \r
50 extern void         option_init         (option_list_t *option);\r
51 \r
52 extern void         option_init_pg      ();\r
53 \r
54 extern bool         option_set          (option_list_t *option,\r
55                                          const char var[],\r
56                                          const char val[]);\r
57 extern bool         option_set_default  (option_list_t *option,\r
58                                          const char var[],\r
59                                          const char val[]);\r
60 \r
61 extern const char * option_get          (option_list_t *option, const char var[]);\r
62 extern const char * option_get_default  (option_list_t *option, const char var[]);\r
63 \r
64 extern bool         option_get_bool     (option_list_t *option, const char var[]);\r
65 extern double       option_get_double   (option_list_t *option, const char var[]);\r
66 extern int          option_get_int      (option_list_t *option, const char var[]);\r
67 extern const char * option_get_string   (option_list_t *option, const char var[]);\r
68 \r
69 extern void         option_from_ini     (option_list_t *option,\r
70                                          ini_t *ini,\r
71                                          const char *section);\r
72 \r
73 extern bool         option_is_ok        (const option_list_t *option);\r
74 extern option_t *   option_find         (option_list_t *option, const char var[]);\r
75 extern void         option_clear        (option_list_t *option);\r
76 extern void         option_insert       (option_list_t *option, option_t *new_option);\r
77 \r
78 extern void         option_start_iter   (option_list_t *option);\r
79 extern option_t *   option_next         (option_list_t *option);\r
80 \r
81 extern void         option_free         (option_t *option);\r
82 \r
83 #endif // !defined OPTION_H\r
84 \r
85 // end of option.h\r
86 \r