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