Mercurial > mplayer.hg
diff cfgparser.h @ 4156:22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
author | arpi |
---|---|
date | Mon, 14 Jan 2002 23:38:49 +0000 |
parents | f61dcc63be5f |
children | f04c49aa2408 |
line wrap: on
line diff
--- a/cfgparser.h Mon Jan 14 23:06:43 2002 +0000 +++ b/cfgparser.h Mon Jan 14 23:38:49 2002 +0000 @@ -28,6 +28,17 @@ #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) + + +typedef struct config config_t; +typedef struct m_config m_config_t; +typedef struct config_save config_save_t; + +#include "playtree.h" + +typedef void (*cfg_default_func_t)(config_t *, char*); struct config { char *name; @@ -35,24 +46,64 @@ unsigned int type; unsigned int flags; float min,max; + cfg_default_func_t default_func; }; -typedef int (*cfg_func_arg_param_t)(struct config *, char *, char *); -typedef int (*cfg_func_param_t)(struct config *, char *); -typedef int (*cfg_func_t)(struct config *); + + +struct m_config { + config_t** opt_list; + config_save_t** config_stack; + int cs_level; + int parser_mode; /* COMMAND_LINE or CONFIG_FILE */ + int global; // Are we parsing global option + play_tree_t* pt; // play tree we use for playlist option, etc + play_tree_t* last_entry; // last added entry + play_tree_t* last_parent; // if last_entry is NULL we must create child of this + int recursion_depth; +}; + +struct config_save { + config_t* opt; + union { + int as_int; + float as_float; + void* as_pointer; + } param; + char* opt_name; +}; + + +typedef int (*cfg_func_arg_param_t)(config_t *, char *, char *); +typedef int (*cfg_func_param_t)(config_t *, char *); +typedef int (*cfg_func_t)(config_t *); /* parse_config_file returns: * -1 on error (can't malloc, invalid option...) * 0 if can't open configfile * 1 on success */ -int parse_config_file(struct config *conf, char *conffile); +int m_config_parse_config_file(m_config_t *config, char *conffile); /* parse_command_line returns: * -1 on error (invalid option...) * 0 if there was no filename on command line - * >=1 if there were filenames + * 1 if there were filenames */ -int parse_command_line(struct config *conf, int argc, char **argv, char **envp, char ***filenames); +int m_config_parse_command_line(m_config_t* config, int argc, char **argv, char **envp); + + +void m_config_register_options(m_config_t *config,config_t *args); + +int m_config_set_option(m_config_t *config,char *opt, char *param); + +config_t* m_config_get_option(m_config_t *config, char* arg); +m_config_t* m_config_new(play_tree_t* pt); + +void m_config_free(m_config_t* config); + +void m_config_push(m_config_t* config); + +int m_config_pop(m_config_t* config); #endif /* __CONFIG_H */