summaryrefslogtreecommitdiffstats
path: root/m_config.h
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-12 01:56:42 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-12 01:56:42 +0000
commit126725660d4bebbab8570221c5681dc01d98fe86 (patch)
tree3ebdca9acf6fae38bfdba5b4159fbd16177da828 /m_config.h
parent0f622e2d6fe735d727b9d8fd12cea22e03fd954b (diff)
downloadmpv-126725660d4bebbab8570221c5681dc01d98fe86.tar.bz2
mpv-126725660d4bebbab8570221c5681dc01d98fe86.tar.xz
New config system + cleanup of header inter dependency
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8165 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'm_config.h')
-rw-r--r--m_config.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/m_config.h b/m_config.h
new file mode 100644
index 0000000000..30375d12d3
--- /dev/null
+++ b/m_config.h
@@ -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