version 1.4.46b
[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 #define IS_BUTTON(str) (my_string_case_equal(str,"button") ||      \\r
21                         my_string_case_equal(str,"save")   ||      \\r
22                         my_string_case_equal(str,"reset"))         \\r
23 \r
24 #define IS_SPIN(str)   (my_string_case_equal(str,"spin") ||        \\r
25                         my_string_case_equal(str,"slider"))        \\r
26 \r
27 #define IS_STRING(str) (my_string_case_equal(str,"string") ||      \\r
28                         my_string_case_equal(str,"path")   ||      \\r
29                         my_string_case_equal(str,"file"))          \\r
30 \r
31 // types\r
32 \r
33 typedef struct {   // TODO: put back in more logical order\r
34     const char * name;\r
35     const char * type;\r
36     const char * min;\r
37     const char * max;\r
38     const char * default_;\r
39     const char * value;\r
40     int var_nb;\r
41     const char * var[VarNb];\r
42     int mode;\r
43 } option_t;\r
44 \r
45 // all non NULL data in an option_list_t should be malloc'ed\r
46 // use "my_string_set" to fill it. \r
47 \r
48 typedef struct {\r
49     option_t options[OptionNb];\r
50     int option_nb;\r
51     int iter;\r
52 } option_list_t;\r
53 \r
54 // variables\r
55 \r
56 extern option_list_t Option[1];\r
57 \r
58 // functions\r
59 \r
60 \r
61 extern void         option_init         (option_list_t *option);\r
62 \r
63 extern void         option_init_pg      ();\r
64 \r
65 extern bool         option_set          (option_list_t *option,\r
66                                          const char var[],\r
67                                          const char val[]);\r
68 extern bool         option_set_default  (option_list_t *option,\r
69                                          const char var[],\r
70                                          const char val[]);\r
71 \r
72 extern const char * option_get          (option_list_t *option, const char var[]);\r
73 extern const char * option_get_default  (option_list_t *option, const char var[]);\r
74 \r
75 extern bool         option_get_bool     (option_list_t *option, const char var[]);\r
76 extern double       option_get_double   (option_list_t *option, const char var[]);\r
77 extern int          option_get_int      (option_list_t *option, const char var[]);\r
78 extern const char * option_get_string   (option_list_t *option, const char var[]);\r
79 \r
80 extern void         option_from_ini     (option_list_t *option,\r
81                                          ini_t *ini,\r
82                                          const char *section);\r
83 \r
84 extern bool         option_is_ok        (const option_list_t *option);\r
85 extern option_t *   option_find         (option_list_t *option, const char var[]);\r
86 extern void         option_clear        (option_list_t *option);\r
87 extern void         option_insert       (option_list_t *option, option_t *new_option);\r
88 \r
89 extern void         option_start_iter   (option_list_t *option);\r
90 extern option_t *   option_next         (option_list_t *option);\r
91 \r
92 extern void         option_free         (option_t *option);\r
93 \r
94 #endif // !defined OPTION_H\r
95 \r
96 // end of option.h\r
97 \r