version 1.4.34b
[polyglot.git] / option.h
index 050ae0e..1d5eab0 100644 (file)
--- a/option.h
+++ b/option.h
 \r
 // defines\r
 \r
-#define VarNb  16\r
-#define XBOARD (1<<0)\r
-#define UCI    (1<<1)\r
-#define PG     (1<<2)\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
@@ -29,23 +30,50 @@ typedef struct {   // TODO: put back in more logical order
     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_t Option[];\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 bool         option_set_default(const char var[], const char val[]);\r
-extern const char * option_get        (const char var[]);\r
-extern const char * option_get_default(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