version 1.4.36b
[polyglot.git] / option.h
index c57438c..1d5eab0 100644 (file)
--- a/option.h
+++ b/option.h
@@ -8,19 +8,17 @@
 \r
 #include "util.h"\r
 \r
-// constants\r
-\r
-const int VarNb = 16;\r
-\r
 // defines\r
 \r
-#define XBOARD 1\r
-#define UCI 2\r
-#define PG 4\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
-struct option_t {   // TODO: put back in more logical order\r
+typedef struct {   // TODO: put back in more logical order\r
     const char * name;\r
     const char * type;\r
     const char * min;\r
@@ -30,25 +28,52 @@ struct option_t {   // TODO: put back in more logical order
     int var_nb;\r
     const char * var[VarNb];\r
     int mode;\r
-};\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