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