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