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 99