diff m_config.h @ 8164:487cfc28525d

New config system + cleanup of header inter dependency
author albeu
date Tue, 12 Nov 2002 01:56:42 +0000
parents
children ff6a98628e6c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m_config.h	Tue Nov 12 01:56:42 2002 +0000
@@ -0,0 +1,87 @@
+
+#ifndef NEW_CONFIG
+#warning "Including m_config.h but NEW_CONFIG is disabled"
+#else
+
+typedef struct m_config_option m_config_option_t;
+typedef struct m_config_save_slot m_config_save_slot_t;
+struct m_option;
+struct m_option_type;
+
+struct m_config_save_slot {
+  m_config_save_slot_t* prev;
+  int lvl;
+  unsigned char data[0];
+};
+
+struct m_config_option {
+  m_config_option_t* next;
+  char* name; // Full name (ie option:subopt)
+  struct m_option* opt;
+  m_config_save_slot_t* slots;
+  unsigned int flags; // currently it only tell if the option was set
+};
+
+typedef struct m_config {
+  m_config_option_t* opts;
+  int lvl; // Current stack level
+  int mode;
+} m_config_t;
+
+
+//////////////////////////// Functions ///////////////////////////////////
+
+m_config_t*
+m_config_new(void);
+
+void
+m_config_free(m_config_t* config);
+
+void
+m_config_push(m_config_t* config);
+
+void
+m_config_pop(m_config_t* config);
+
+int
+m_config_register_options(m_config_t *config, struct m_option *args);
+
+int
+m_config_set_option(m_config_t *config, char* arg, char* param);
+
+int
+m_config_check_option(m_config_t *config, char* arg, char* param);
+
+struct m_option*
+m_config_get_option(m_config_t *config, char* arg);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/////////////////////////// Backward compat. stuff ////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////
+
+typedef struct config config_t;
+struct config {
+  char *name;
+  void *p; 
+  struct m_option_type* type;
+  unsigned int flags;
+  float min,max;
+  void* priv;
+};
+
+
+#define CONF_MIN		(1<<0)
+#define CONF_MAX		(1<<1)
+#define CONF_RANGE	(CONF_MIN|CONF_MAX)
+#define CONF_NOCFG	(1<<2)
+#define CONF_NOCMD	(1<<3)
+#define CONF_GLOBAL	(1<<4)
+#define CONF_NOSAVE	(1<<5)
+#define CONF_OLD		(1<<6)
+
+#define ERR_NOT_AN_OPTION	 -1
+#define ERR_MISSING_PARAM	 -2
+#define ERR_OUT_OF_RANGE	 -3
+#define ERR_FUNC_ERR	 -4
+
+#endif