Mercurial > mplayer.hg
changeset 24966:cc170348a763
correct const usage in the option handling code so that tables can be
declared const and moved from .data to .text/rodata sections.
author | rfelker |
---|---|
date | Fri, 09 Nov 2007 06:50:53 +0000 |
parents | ecc2d02a836a |
children | 7e5b170408b2 |
files | m_option.c m_option.h m_struct.c m_struct.h |
diffstat | 4 files changed, 137 insertions(+), 137 deletions(-) [+] |
line wrap: on
line diff
--- a/m_option.c Fri Nov 09 03:49:32 2007 +0000 +++ b/m_option.c Fri Nov 09 06:50:53 2007 +0000 @@ -23,7 +23,7 @@ //#define NO_FREE #endif -m_option_t* m_option_list_find(m_option_t* list,const char* name) { +const m_option_t* m_option_list_find(const m_option_t* list,const char* name) { int i; for(i = 0 ; list[i].name ; i++) { @@ -40,7 +40,7 @@ // Default function that just does a memcpy -static void copy_opt(m_option_t* opt,void* dst,void* src) { +static void copy_opt(const m_option_t* opt,void* dst,void* src) { if(dst && src) memcpy(dst,src,opt->type->size); } @@ -76,7 +76,7 @@ #define VAL(x) (*(int*)(x)) -static int parse_flag(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_flag(const m_option_t* opt,const char *name, char *param, void* dst, int src) { if (src == M_CONFIG_FILE) { if(!param) return M_OPT_MISSING_PARAM; if (!strcasecmp(param, "yes") || /* any other language? */ @@ -114,14 +114,14 @@ } } -static char* print_flag(m_option_t* opt, void* val) { +static char* print_flag(const m_option_t* opt, void* val) { if(VAL(val) == opt->min) return strdup("no"); else return strdup("yes"); } -m_option_type_t m_option_type_flag = { +const m_option_type_t m_option_type_flag = { "Flag", "need yes or no in config files", sizeof(int), @@ -136,7 +136,7 @@ // Integer -static int parse_int(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_int(const m_option_t* opt,const char *name, char *param, void* dst, int src) { long tmp_int; char *endptr; src = 0; @@ -167,12 +167,12 @@ return 1; } -static char* print_int(m_option_t* opt, void* val) { +static char* print_int(const m_option_t* opt, void* val) { opt = NULL; return dup_printf("%d",VAL(val)); } -m_option_type_t m_option_type_int = { +const m_option_type_t m_option_type_int = { "Integer", "", sizeof(int), @@ -190,7 +190,7 @@ #undef VAL #define VAL(x) (*(double*)(x)) -static int parse_double(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_double(const m_option_t* opt,const char *name, char *param, void* dst, int src) { double tmp_float; char* endptr; src = 0; @@ -239,12 +239,12 @@ return 1; } -static char* print_double(m_option_t* opt, void* val) { +static char* print_double(const m_option_t* opt, void* val) { opt = NULL; return dup_printf("%f",VAL(val)); } -m_option_type_t m_option_type_double = { +const m_option_type_t m_option_type_double = { "Double", "double precission floating point number or ratio (numerator[:/]denominator)", sizeof(double), @@ -260,19 +260,19 @@ #undef VAL #define VAL(x) (*(float*)(x)) -static int parse_float(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_float(const m_option_t* opt,const char *name, char *param, void* dst, int src) { double tmp; int r= parse_double(opt, name, param, &tmp, src); if(r==1 && dst) VAL(dst) = tmp; return r; } -static char* print_float(m_option_t* opt, void* val) { +static char* print_float(const m_option_t* opt, void* val) { opt = NULL; return dup_printf("%f",VAL(val)); } -m_option_type_t m_option_type_float = { +const m_option_type_t m_option_type_float = { "Float", "floating point number or ratio (numerator[:/]denominator)", sizeof(float), @@ -289,7 +289,7 @@ #undef VAL #define VAL(x) (*(off_t*)(x)) -static int parse_position(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_position(const m_option_t* opt,const char *name, char *param, void* dst, int src) { off_t tmp_off; char dummy; @@ -322,11 +322,11 @@ return 1; } -static char* print_position(m_option_t* opt, void* val) { +static char* print_position(const m_option_t* opt, void* val) { return dup_printf("%"PRId64,(int64_t)VAL(val)); } -m_option_type_t m_option_type_position = { +const m_option_type_t m_option_type_position = { "Position", "Integer (off_t)", sizeof(off_t), @@ -345,7 +345,7 @@ #undef VAL #define VAL(x) (*(char**)(x)) -static int parse_str(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_str(const m_option_t* opt,const char *name, char *param, void* dst, int src) { if (param == NULL) @@ -373,11 +373,11 @@ } -static char* print_str(m_option_t* opt, void* val) { +static char* print_str(const m_option_t* opt, void* val) { return (val && VAL(val) && strlen(VAL(val)) > 0) ? strdup(VAL(val)) : NULL; } -static void copy_str(m_option_t* opt,void* dst, void* src) { +static void copy_str(const m_option_t* opt,void* dst, void* src) { if(dst && src) { #ifndef NO_FREE if(VAL(dst)) free(VAL(dst)); //FIXME!!! @@ -395,7 +395,7 @@ } } -m_option_type_t m_option_type_string = { +const m_option_type_t m_option_type_string = { "String", "", sizeof(char*), @@ -525,14 +525,14 @@ return ptr; } -static int parse_str_list(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_str_list(const m_option_t* opt,const char *name, char *param, void* dst, int src) { int n = 0,len = strlen(opt->name); char *str; char *ptr = param, *last_ptr, **res; int op = OP_NONE; if(opt->name[len-1] == '*' && ((int)strlen(name) > len - 1)) { - char* n = &name[len-1]; + const char* n = &name[len-1]; if(strcasecmp(n,"-add") == 0) op = OP_ADD; else if(strcasecmp(n,"-pre") == 0) @@ -612,7 +612,7 @@ return 1; } -static void copy_str_list(m_option_t* opt,void* dst, void* src) { +static void copy_str_list(const m_option_t* opt,void* dst, void* src) { int n; char **d,**s; @@ -636,7 +636,7 @@ VAL(dst) = d; } -static char* print_str_list(m_option_t* opt, void* src) { +static char* print_str_list(const m_option_t* opt, void* src) { char **lst = NULL; char *ret = NULL,*last = NULL; int i; @@ -656,7 +656,7 @@ return ret; } -m_option_type_t m_option_type_string_list = { +const m_option_type_t m_option_type_string_list = { "String list", "A list of strings separated by ','\n" "Option with a name ending in an * permits using the following suffix: \n" @@ -707,7 +707,7 @@ } // Parser for func_param and func_full -static int parse_func_pf(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_func_pf(const m_option_t* opt,const char *name, char *param, void* dst, int src) { m_func_save_t *s,*p; if(!dst) @@ -728,7 +728,7 @@ return 1; } -static void copy_func_pf(m_option_t* opt,void* dst, void* src) { +static void copy_func_pf(const m_option_t* opt,void* dst, void* src) { m_func_save_t *d = NULL, *s,* last = NULL; if(!(dst && src)) return; @@ -754,7 +754,7 @@ /////////////////// Func_param -static void set_func_param(m_option_t* opt, void* dst, void* src) { +static void set_func_param(const m_option_t* opt, void* dst, void* src) { m_func_save_t* s; if(!src) return; @@ -768,7 +768,7 @@ ((m_opt_func_param_t) opt->p)(opt,s->param); } -m_option_type_t m_option_type_func_param = { +const m_option_type_t m_option_type_func_param = { "Func param", "", sizeof(m_func_save_t*), @@ -783,7 +783,7 @@ /////////////////// Func_full -static void set_func_full(m_option_t* opt, void* dst, void* src) { +static void set_func_full(const m_option_t* opt, void* dst, void* src) { m_func_save_t* s; if(!src) return; @@ -795,7 +795,7 @@ } } -m_option_type_t m_option_type_func_full = { +const m_option_type_t m_option_type_func_full = { "Func full", "", sizeof(m_func_save_t*), @@ -813,20 +813,20 @@ #undef VAL #define VAL(x) (*(int*)(x)) -static int parse_func(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_func(const m_option_t* opt,const char *name, char *param, void* dst, int src) { if(dst) VAL(dst) += 1; return 0; } -static void set_func(m_option_t* opt,void* dst, void* src) { +static void set_func(const m_option_t* opt,void* dst, void* src) { int i; if(opt->priv) ((m_opt_default_func_t)opt->priv)(opt,opt->name); for(i = 0 ; i < VAL(src) ; i++) ((m_opt_func_t) opt->p)(opt); } -m_option_type_t m_option_type_func = { +const m_option_type_t m_option_type_func = { "Func", "", sizeof(int), @@ -841,7 +841,7 @@ /////////////////// Print -static int parse_print(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_print(const m_option_t* opt,const char *name, char *param, void* dst, int src) { if(opt->type == CONF_TYPE_PRINT_INDIRECT) mp_msg(MSGT_CFGPARSER, MSGL_INFO, "%s", *(char **) opt->p); else if(opt->type == CONF_TYPE_PRINT_FUNC) @@ -854,7 +854,7 @@ return 1; } -m_option_type_t m_option_type_print = { +const m_option_type_t m_option_type_print = { "Print", "", 0, @@ -867,7 +867,7 @@ NULL }; -m_option_type_t m_option_type_print_indirect = { +const m_option_type_t m_option_type_print_indirect = { "Print", "", 0, @@ -880,7 +880,7 @@ NULL }; -m_option_type_t m_option_type_print_func = { +const m_option_type_t m_option_type_print_func = { "Print", "", 0, @@ -898,12 +898,12 @@ #undef VAL #define VAL(x) (*(char***)(x)) -static int parse_subconf(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_subconf(const m_option_t* opt,const char *name, char *param, void* dst, int src) { char *subparam; char *subopt; int nr = 0,i,r; - m_option_t *subopts; - char *p; + const m_option_t *subopts; + const char *p; char** lst = NULL; if (param == NULL || strlen(param) == 0) @@ -938,7 +938,7 @@ p = &p[1]; } else if (p[0] == '%') { p = &p[1]; - optlen = (int)strtol(p, &p, 0); + optlen = (int)strtol(p, (char**)&p, 0); if (!p || p[0] != '%' || (optlen > strlen(p) - 1)) { mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Invalid length %i for '%s'\n", optlen, subopt); return M_OPT_INVALID; @@ -993,7 +993,7 @@ return 1; } -m_option_type_t m_option_type_subconfig = { +const m_option_type_t m_option_type_subconfig = { "Subconfig", "The syntax is -option opt1=foo:flag:opt2=blah", sizeof(int), @@ -1054,7 +1054,7 @@ { NULL, 0 } }; -static int parse_imgfmt(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_imgfmt(const m_option_t* opt,const char *name, char *param, void* dst, int src) { uint32_t fmt = 0; int i; @@ -1089,7 +1089,7 @@ return 1; } -m_option_type_t m_option_type_imgfmt = { +const m_option_type_t m_option_type_imgfmt = { "Image format", "Please report any missing colorspaces.", sizeof(uint32_t), @@ -1142,7 +1142,7 @@ { NULL, 0 } }; -static int parse_afmt(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_afmt(const m_option_t* opt,const char *name, char *param, void* dst, int src) { uint32_t fmt = 0; int i; @@ -1177,7 +1177,7 @@ return 1; } -m_option_type_t m_option_type_afmt = { +const m_option_type_t m_option_type_afmt = { "Audio format", "Please report any missing formats.", sizeof(uint32_t), @@ -1191,7 +1191,7 @@ }; -static double parse_timestring(char *str) +static double parse_timestring(const char *str) { int a, b; double d; @@ -1205,7 +1205,7 @@ } -static int parse_time(m_option_t* opt,char *name, char *param, void* dst, int src) +static int parse_time(const m_option_t* opt,const char *name, char *param, void* dst, int src) { double time; @@ -1224,7 +1224,7 @@ return 1; } -m_option_type_t m_option_type_time = { +const m_option_type_t m_option_type_time = { "Time", "", sizeof(double), @@ -1240,7 +1240,7 @@ // Time or size (-endpos) -static int parse_time_size(m_option_t* opt,char *name, char *param, void* dst, int src) { +static int parse_time_size(const m_option_t* opt,const char *name, char *param, void* dst, int src) { m_time_size_t ts; char unit[4]; double end_at; @@ -1285,7 +1285,7 @@ return 1; } -m_option_type_t m_option_type_time_size = { +const m_option_type_t m_option_type_time_size = { "Time or size", "", sizeof(m_time_size_t), @@ -1306,7 +1306,7 @@ #undef VAL #define VAL(x) (*(m_obj_settings_t**)(x)) -static int find_obj_desc(char* name,m_obj_list_t* l,m_struct_t** ret) { +static int find_obj_desc(const char* name,const m_obj_list_t* l,const m_struct_t** ret) { int i; char* n; @@ -1320,10 +1320,10 @@ return 0; } -static int get_obj_param(const char* opt_name,const char* obj_name, m_struct_t* desc, +static int get_obj_param(const char* opt_name,const char* obj_name, const m_struct_t* desc, char* str,int* nold,int oldmax,char** dst) { char* eq; - m_option_t* opt; + const m_option_t* opt; int r; eq = strchr(str,'='); @@ -1374,7 +1374,7 @@ } static int get_obj_params(const char* opt_name, const char* name,char* params, - m_struct_t* desc,char separator, char*** _ret) { + const m_struct_t* desc,char separator, char*** _ret) { int n = 0,nold = 0, nopts,r; char* ptr,*last_ptr = params; char** ret; @@ -1387,7 +1387,7 @@ } printf("\n Name Type Min Max\n\n"); for(n = 0 ; desc->fields[n].name ; n++) { - m_option_t* opt = &desc->fields[n]; + const m_option_t* opt = &desc->fields[n]; if(opt->type->flags & M_OPT_TYPE_HAS_CHILD) continue; if(opt->flags & M_OPT_MIN) sprintf(min,"%-8.0f",opt->min); @@ -1470,12 +1470,12 @@ return 1; } -static int parse_obj_params(m_option_t* opt,char *name, +static int parse_obj_params(const m_option_t* opt,const char *name, char *param, void* dst, int src) { char** opts; int r; m_obj_params_t* p = opt->priv; - m_struct_t* desc; + const m_struct_t* desc; char* cpy = strdup(param); // We need the object desc @@ -1499,7 +1499,7 @@ } -m_option_type_t m_option_type_obj_params = { +const m_option_type_t m_option_type_obj_params = { "Object params", "", 0, @@ -1515,28 +1515,28 @@ /// Some predefined types as a definition would be quite lengthy /// Span arguments -static m_span_t m_span_params_dflts = { -1, -1 }; -static m_option_t m_span_params_fields[] = { +static const m_span_t m_span_params_dflts = { -1, -1 }; +static const m_option_t m_span_params_fields[] = { {"start", M_ST_OFF(m_span_t,start), CONF_TYPE_INT, M_OPT_MIN, 1 ,0, NULL}, {"end", M_ST_OFF(m_span_t,end), CONF_TYPE_INT, M_OPT_MIN , 1 ,0, NULL}, { NULL, NULL, 0, 0, 0, 0, NULL } }; -static struct m_struct_st m_span_opts = { +static const struct m_struct_st m_span_opts = { "m_span", sizeof(m_span_t), &m_span_params_dflts, m_span_params_fields }; -m_obj_params_t m_span_params_def = { +const m_obj_params_t m_span_params_def = { &m_span_opts, '-' }; -static int parse_obj_settings(char* opt,char* str,m_obj_list_t* list, +static int parse_obj_settings(const char* opt,char* str,const m_obj_list_t* list, m_obj_settings_t **_ret, int ret_n) { int r; char *param,**plist = NULL; - m_struct_t* desc; + const m_struct_t* desc; m_obj_settings_t *ret = _ret ? *_ret : NULL; @@ -1584,11 +1584,11 @@ static void free_obj_settings_list(void* dst); -static int obj_settings_list_del(char *opt_name,char *param,void* dst, int src) { +static int obj_settings_list_del(const char *opt_name,char *param,void* dst, int src) { char** str_list = NULL; int r,i,idx_max = 0; char* rem_id = "_removed_marker_"; - m_option_t list_opt = {opt_name , NULL, CONF_TYPE_STRING_LIST, + const m_option_t list_opt = {opt_name , NULL, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }; m_obj_settings_t* obj_list = dst ? VAL(dst) : NULL; @@ -1642,7 +1642,7 @@ return 1; } -static int parse_obj_settings_list(m_option_t* opt,char *name, +static int parse_obj_settings_list(const m_option_t* opt,const char *name, char *param, void* dst, int src) { int n = 0,r,len = strlen(opt->name); char *str; @@ -1655,7 +1655,7 @@ return M_OPT_INVALID; if(opt->name[len-1] == '*' && ((int)strlen(name) > len - 1)) { - char* n = &name[len-1]; + const char* n = &name[len-1]; if(strcasecmp(n,"-add") == 0) op = OP_ADD; else if(strcasecmp(n,"-pre") == 0) @@ -1796,7 +1796,7 @@ VAL(dst) = NULL; } -static void copy_obj_settings_list(m_option_t* opt,void* dst, void* src) { +static void copy_obj_settings_list(const m_option_t* opt,void* dst, void* src) { m_obj_settings_t *d,*s; int n; @@ -1824,7 +1824,7 @@ VAL(dst) = d; } -m_option_type_t m_option_type_obj_settings_list = { +const m_option_type_t m_option_type_obj_settings_list = { "Object settings list", "", sizeof(m_obj_settings_t*), @@ -1839,7 +1839,7 @@ -static int parse_obj_presets(m_option_t* opt,char *name, +static int parse_obj_presets(const m_option_t* opt,const char *name, char *param, void* dst, int src) { m_obj_presets_t* obj_p = (m_obj_presets_t*)opt->priv; m_struct_t *in_desc,*out_desc; @@ -1886,7 +1886,7 @@ if(!dst) return 1; for(i = 0 ; in_desc->fields[i].name ; i++) { - m_option_t* out_opt = m_option_list_find(out_desc->fields, + const m_option_t* out_opt = m_option_list_find(out_desc->fields, in_desc->fields[i].name); if(!out_opt) { mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option %s: Unable to find the target option for field %s.\nPlease report this to the developers.\n",name,in_desc->fields[i].name); @@ -1898,7 +1898,7 @@ } -m_option_type_t m_option_type_obj_presets = { +const m_option_type_t m_option_type_obj_presets = { "Object presets", "", 0, @@ -1911,7 +1911,7 @@ NULL }; -static int parse_custom_url(m_option_t* opt,char *name, +static int parse_custom_url(const m_option_t* opt,const char *name, char *url, void* dst, int src) { int pos1, pos2, r, v6addr = 0; char *ptr1=NULL, *ptr2=NULL, *ptr3=NULL, *ptr4=NULL; @@ -2108,7 +2108,7 @@ } /// TODO : Write the other needed funcs for 'normal' options -m_option_type_t m_option_type_custom_url = { +const m_option_type_t m_option_type_custom_url = { "Custom URL", "", 0,
--- a/m_option.h Fri Nov 09 03:49:32 2007 +0000 +++ b/m_option.h Fri Nov 09 06:50:53 2007 +0000 @@ -21,39 +21,39 @@ ///////////////////////////// Options types declarations //////////////////////////// // Simple types -extern m_option_type_t m_option_type_flag; -extern m_option_type_t m_option_type_int; -extern m_option_type_t m_option_type_float; -extern m_option_type_t m_option_type_double; -extern m_option_type_t m_option_type_string; -extern m_option_type_t m_option_type_string_list; -extern m_option_type_t m_option_type_position; -extern m_option_type_t m_option_type_time; -extern m_option_type_t m_option_type_time_size; +extern const m_option_type_t m_option_type_flag; +extern const m_option_type_t m_option_type_int; +extern const m_option_type_t m_option_type_float; +extern const m_option_type_t m_option_type_double; +extern const m_option_type_t m_option_type_string; +extern const m_option_type_t m_option_type_string_list; +extern const m_option_type_t m_option_type_position; +extern const m_option_type_t m_option_type_time; +extern const m_option_type_t m_option_type_time_size; -extern m_option_type_t m_option_type_print; -extern m_option_type_t m_option_type_print_indirect; -extern m_option_type_t m_option_type_print_func; -extern m_option_type_t m_option_type_subconfig; -extern m_option_type_t m_option_type_imgfmt; -extern m_option_type_t m_option_type_afmt; +extern const m_option_type_t m_option_type_print; +extern const m_option_type_t m_option_type_print_indirect; +extern const m_option_type_t m_option_type_print_func; +extern const m_option_type_t m_option_type_subconfig; +extern const m_option_type_t m_option_type_imgfmt; +extern const m_option_type_t m_option_type_afmt; // Func-based types -extern m_option_type_t m_option_type_func_full; -extern m_option_type_t m_option_type_func_param; -extern m_option_type_t m_option_type_func; +extern const m_option_type_t m_option_type_func_full; +extern const m_option_type_t m_option_type_func_param; +extern const m_option_type_t m_option_type_func; /// Callback used to reset func options. -typedef void (*m_opt_default_func_t)(m_option_t *, char*); +typedef void (*m_opt_default_func_t)(const m_option_t *, const char*); /// Callback used by m_option_type_func_full options. -typedef int (*m_opt_func_full_t)(m_option_t *, char *, char *); +typedef int (*m_opt_func_full_t)(const m_option_t *, const char *, char *); /// Callback used by m_option_type_func_param options. -typedef int (*m_opt_func_param_t)(m_option_t *, char *); +typedef int (*m_opt_func_param_t)(const m_option_t *, const char *); /// Callback used by m_option_type_func options. -typedef int (*m_opt_func_t)(m_option_t *); +typedef int (*m_opt_func_t)(const m_option_t *); // Backwards compatibility typedef m_opt_default_func_t cfg_default_func_t; @@ -95,7 +95,7 @@ * field (\ref m_option::priv) must point to a \ref m_obj_list_t describing * the available object types. */ -extern m_option_type_t m_option_type_obj_settings_list; +extern const m_option_type_t m_option_type_obj_settings_list; /// Extra definition needed for \ref m_option_type_obj_presets options. typedef struct { @@ -116,18 +116,18 @@ * The option priv field (\ref m_option::priv) must point to a correctly * filled \ref m_obj_presets_t. */ -extern m_option_type_t m_option_type_obj_presets; +extern const m_option_type_t m_option_type_obj_presets; /// Parse an URL into a struct. /** The option priv field (\ref m_option::priv) must point to a * \ref m_struct_st describing which fields of the URL must be used. */ -extern m_option_type_t m_option_type_custom_url; +extern const m_option_type_t m_option_type_custom_url; /// Extra definition needed for \ref m_option_type_obj_params options. typedef struct { /// Field descriptions. - struct m_struct_st* desc; + const struct m_struct_st* desc; /// Field separator to use. char separator; } m_obj_params_t; @@ -137,14 +137,14 @@ * successively sets a field from the struct. The option priv field * (\ref m_option::priv) must point to a \ref m_obj_params_t. */ -extern m_option_type_t m_option_type_obj_params; +extern const m_option_type_t m_option_type_obj_params; typedef struct { int start; int end; } m_span_t; /// Ready made settings to parse a \ref m_span_t with a start-end syntax. -extern m_obj_params_t m_span_params_def; +extern const m_obj_params_t m_span_params_def; // FIXME: backward compatibility @@ -196,7 +196,7 @@ * \return On error a negative value is returned, on success the number of arguments * consumed. For details see \ref OptionParserReturn. */ - int (*parse)(m_option_t* opt,char *name, char *param, void* dst, int src); + int (*parse)(const m_option_t* opt,const char *name, char *param, void* dst, int src); /// Print back a value in string form. /** \param opt The option to print. @@ -204,7 +204,7 @@ * \return An allocated string containing the text value or (void*)-1 * on error. */ - char* (*print)(m_option_t* opt, void* val); + char* (*print)(const m_option_t* opt, void* val); /** \name * These functions are called to save/set/restore the status of the @@ -219,21 +219,21 @@ * \param dst Pointer to the destination memory. * \param src Pointer to the source memory. */ - void (*save)(m_option_t* opt,void* dst, void* src); + void (*save)(const m_option_t* opt,void* dst, void* src); /// Set the value in the program (dst) from a save slot. /** \param opt The option to copy. * \param dst Pointer to the destination memory. * \param src Pointer to the source memory. */ - void (*set)(m_option_t* opt,void* dst, void* src); + void (*set)(const m_option_t* opt,void* dst, void* src); /// Copy the data between two save slots. If NULL and size is > 0 a memcpy will be used. /** \param opt The option to copy. * \param dst Pointer to the destination memory. * \param src Pointer to the source memory. */ - void (*copy)(m_option_t* opt,void* dst, void* src); + void (*copy)(const m_option_t* opt,void* dst, void* src); //@} /// Free the data allocated for a save slot. @@ -251,7 +251,7 @@ */ struct m_option { /// Option name. - char *name; + const char *name; /// Reserved for higher level APIs, it shouldn't be used by parsers. /** The suboption parser and func types do use it. They should instead @@ -261,7 +261,7 @@ void *p; /// Option type. - m_option_type_t* type; + const m_option_type_t* type; /// See \ref OptionFlags. unsigned int flags; @@ -451,17 +451,17 @@ * \param name Name of the option. * \return The matching option or NULL. */ -m_option_t* m_option_list_find(m_option_t* list,const char* name); +const m_option_t* m_option_list_find(const m_option_t* list,const char* name); /// Helper to parse options, see \ref m_option_type::parse. inline static int -m_option_parse(m_option_t* opt,char *name, char *param, void* dst, int src) { +m_option_parse(const m_option_t* opt,const char *name, char *param, void* dst, int src) { return opt->type->parse(opt,name,param,dst,src); } /// Helper to print options, see \ref m_option_type::print. inline static char* -m_option_print(m_option_t* opt, void* val_ptr) { +m_option_print(const m_option_t* opt, void* val_ptr) { if(opt->type->print) return opt->type->print(opt,val_ptr); else @@ -470,21 +470,21 @@ /// Helper around \ref m_option_type::save. inline static void -m_option_save(m_option_t* opt,void* dst, void* src) { +m_option_save(const m_option_t* opt,void* dst, void* src) { if(opt->type->save) opt->type->save(opt,dst,src); } /// Helper around \ref m_option_type::set. inline static void -m_option_set(m_option_t* opt,void* dst, void* src) { +m_option_set(const m_option_t* opt,void* dst, void* src) { if(opt->type->set) opt->type->set(opt,dst,src); } /// Helper around \ref m_option_type::copy. inline static void -m_option_copy(m_option_t* opt,void* dst, void* src) { +m_option_copy(const m_option_t* opt,void* dst, void* src) { if(opt->type->copy) opt->type->copy(opt,dst,src); else if(opt->type->size > 0) @@ -493,7 +493,7 @@ /// Helper around \ref m_option_type::free. inline static void -m_option_free(m_option_t* opt,void* dst) { +m_option_free(const m_option_t* opt,void* dst) { if(opt->type->free) opt->type->free(dst); }
--- a/m_struct.c Fri Nov 09 03:49:32 2007 +0000 +++ b/m_struct.c Fri Nov 09 06:50:53 2007 +0000 @@ -11,8 +11,8 @@ #include "m_struct.h" #include "mp_msg.h" -m_option_t* -m_struct_get_field(m_struct_t* st,const char* f) { +const m_option_t* +m_struct_get_field(const m_struct_t* st,const char* f) { int i; for(i = 0 ; st->fields[i].name ; i++) { @@ -23,7 +23,7 @@ } void* -m_struct_alloc(m_struct_t* st) { +m_struct_alloc(const m_struct_t* st) { int i; void* r; @@ -51,8 +51,8 @@ } int -m_struct_set(m_struct_t* st, void* obj, char* field, char* param) { - m_option_t* f = m_struct_get_field(st,field); +m_struct_set(const m_struct_t* st, void* obj, char* field, char* param) { + const m_option_t* f = m_struct_get_field(st,field); if(!f) { mp_msg(MSGT_CFGPARSER, MSGL_ERR,"Struct %s doesn't have any %s field\n", @@ -70,8 +70,8 @@ } void -m_struct_reset(m_struct_t* st, void* obj, const char* field) { - m_option_t* f; +m_struct_reset(const m_struct_t* st, void* obj, const char* field) { + const m_option_t* f; if(!field) { // Reset all options int i; @@ -92,7 +92,7 @@ /// Free an allocated struct void -m_struct_free(m_struct_t* st, void* obj) { +m_struct_free(const m_struct_t* st, void* obj) { int i; for(i = 0 ; st->fields[i].name ; i++) @@ -101,7 +101,7 @@ } void* -m_struct_copy(m_struct_t* st, void* obj) { +m_struct_copy(const m_struct_t* st, void* obj) { void* r = malloc(st->size); int i;
--- a/m_struct.h Fri Nov 09 03:49:32 2007 +0000 +++ b/m_struct.h Fri Nov 09 06:50:53 2007 +0000 @@ -22,7 +22,7 @@ /** The p field of the \ref m_option struct must contain the offset * of the member in the struct (use M_ST_OFF macro for this). */ - struct m_option* fields; + const struct m_option* fields; } m_struct_t; @@ -60,7 +60,7 @@ * \return The newly allocated object set to default. */ void* -m_struct_alloc(m_struct_t* st); +m_struct_alloc(const m_struct_t* st); /// Set a field of the struct. /** \param st Struct definition. @@ -70,7 +70,7 @@ * \return 0 on error, 1 on success. */ int -m_struct_set(m_struct_t* st, void* obj, char* field, char* param); +m_struct_set(const m_struct_t* st, void* obj, char* field, char* param); /// Reset a field (or all if field == NULL) to defaults. /** \param st Struct definition. @@ -78,7 +78,7 @@ * \param field Name of the field to reset, if NULL all fields are reseted. */ void -m_struct_reset(m_struct_t* st, void* obj, const char* field); +m_struct_reset(const m_struct_t* st, void* obj, const char* field); /// Create a copy of an existing struct. /** \param st Struct definition. @@ -86,22 +86,22 @@ * \return Newly allocated copy of obj. */ void* -m_struct_copy(m_struct_t* st, void* obj); +m_struct_copy(const m_struct_t* st, void* obj); /// Free an allocated struct. /** \param st Struct definition. * \param obj Pointer to the struct to copy. */ void -m_struct_free(m_struct_t* st, void* obj); +m_struct_free(const m_struct_t* st, void* obj); /// Get a field description. /** \param st Struct definition. * \param f Name of the field. * \return The \ref m_option struct describing the field or NULL if not found. */ -struct m_option* -m_struct_get_field(m_struct_t* st,const char* f); +const struct m_option* +m_struct_get_field(const m_struct_t* st,const char* f); ///@}