\r
#include "util.h"\r
\r
+// defines\r
+\r
+#define VarNb 16\r
+#define XBOARD (1<<0)\r
+#define UCI (1<<1)\r
+#define PG (1<<2)\r
+#define OptionNb 256\r
+\r
+// types\r
+\r
+typedef struct { // TODO: put back in more logical order\r
+ const char * name;\r
+ const char * type;\r
+ const char * min;\r
+ const char * max;\r
+ const char * default_;\r
+ const char * value;\r
+ int var_nb;\r
+ const char * var[VarNb];\r
+ int mode;\r
+} option_t;\r
+\r
+// all non NULL data in an option_list_t should be malloc'ed\r
+// use "my_string_set" to fill it. \r
+\r
+typedef struct {\r
+ option_t options[OptionNb];\r
+ int option_nb;\r
+ int iter;\r
+} option_list_t;\r
+\r
+// variables\r
+\r
+extern option_list_t Option[1];\r
+\r
// functions\r
\r
-extern void option_init ();\r
\r
-extern bool option_set (const char var[], const char val[]);\r
-extern const char * option_get (const char var[]);\r
+extern void option_init (option_list_t *option);\r
+\r
+extern void option_init_pg ();\r
+\r
+extern bool option_set (option_list_t *option,\r
+ const char var[],\r
+ const char val[]);\r
+extern bool option_set_default (option_list_t *option,\r
+ const char var[],\r
+ const char val[]);\r
+\r
+extern const char * option_get (option_list_t *option, const char var[]);\r
+extern const char * option_get_default (option_list_t *option, const char var[]);\r
+\r
+extern bool option_get_bool (option_list_t *option, const char var[]);\r
+extern double option_get_double (option_list_t *option, const char var[]);\r
+extern int option_get_int (option_list_t *option, const char var[]);\r
+extern const char * option_get_string (option_list_t *option, const char var[]);\r
+\r
+extern bool option_is_ok (const option_list_t *option);\r
+extern option_t * option_find (option_list_t *option, const char var[]);\r
+extern void option_clear (option_list_t *option);\r
+extern void option_insert (option_list_t *option, option_t *new_option);\r
+\r
+extern void option_start_iter (option_list_t *option);\r
+extern option_t * option_next (option_list_t *option);\r
\r
-extern bool option_get_bool (const char var[]);\r
-extern double option_get_double (const char var[]);\r
-extern int option_get_int (const char var[]);\r
-extern const char * option_get_string (const char var[]);\r
+extern void option_free (option_t *option);\r
\r
#endif // !defined OPTION_H\r
\r