X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Flibcore%2Flc_opts_enum.c;h=c286f97c813e91a3d8df744be95b38ac7c60a769;hb=4f25f9ca1fd1d53303f277a140a1aa657782aeba;hp=75ce0ff9fe73abe749afa097c9c18139a42f3835;hpb=e84184056559e90f2dffc7f7648f40705864e088;p=libfirm diff --git a/ir/libcore/lc_opts_enum.c b/ir/libcore/lc_opts_enum.c index 75ce0ff9f..c286f97c8 100644 --- a/ir/libcore/lc_opts_enum.c +++ b/ir/libcore/lc_opts_enum.c @@ -15,23 +15,17 @@ #include #include -#ifdef _WIN32 -#include -#endif -#ifdef HAVE_ALLOCA_H -#include -#endif - #include "lc_opts_t.h" #include "lc_opts_enum.h" +#include "xmalloc.h" -static const char *delim = " \t|,"; +static const char *delim = " \t|,"; #define DECL_CB(N, op) \ -int lc_opt_enum_ ## N ## _cb(LC_UNUSED(const char *name), LC_UNUSED(lc_opt_type_t type), void *data, size_t len, ...) \ +int lc_opt_enum_ ## N ## _cb(const char *name, lc_opt_type_t type, void *data, size_t len, ...) \ { \ - lc_opt_enum_ ## N ## _var_t *var = data; \ - const lc_opt_enum_ ## N ## _items_t *items = var->items; \ + lc_opt_enum_ ## N ## _var_t *var = (lc_opt_enum_ ## N ## _var_t*)data; \ + const lc_opt_enum_ ## N ## _items_t *items = var->items; \ \ va_list args; \ char *s, *tmp; \ @@ -39,17 +33,19 @@ int lc_opt_enum_ ## N ## _cb(LC_UNUSED(const char *name), LC_UNUSED(lc_opt_type_ const char *arg; \ int res = 0; \ \ + (void) name; \ + (void) type; \ va_start(args, len); \ arg = va_arg(args, const char *); \ va_end(args); \ \ end = strlen(arg); \ - tmp = s = malloc((end + 1) * sizeof(arg[0])); \ + tmp = s = (char*)malloc((end + 1) * sizeof(arg[0])); \ strcpy(s, arg); \ s[end] = '\0'; \ \ end = 0; \ - while(arg[end] != '\0') { \ + while (arg[end] != '\0') { \ unsigned int i; \ \ begin = end + strspn(arg + end, delim); \ @@ -57,8 +53,8 @@ int lc_opt_enum_ ## N ## _cb(LC_UNUSED(const char *name), LC_UNUSED(lc_opt_type_ s = tmp + begin; \ s[end - begin] = '\0'; \ \ - for(i = 0; items[i].name != NULL; ++i) { \ - if(strcmp(s, items[i].name) == 0) { \ + for (i = 0; items[i].name != NULL; ++i) { \ + if (strcmp(s, items[i].name) == 0) { \ *var->value op items[i].value; \ res = 1; \ } \ @@ -75,14 +71,17 @@ DECL_CB(const_ptr, =) DECL_CB(func_ptr, =) #define DECL_DUMP(T, N, cond) \ -int lc_opt_enum_ ## N ## _dump(char *buf, size_t n, LC_UNUSED(const char *name), LC_UNUSED(lc_opt_type_t type), void *data, LC_UNUSED(size_t len)) \ +int lc_opt_enum_ ## N ## _dump(char *buf, size_t n, const char *name, lc_opt_type_t type, void *data, size_t len) \ { \ - lc_opt_enum_ ## N ## _var_t *var = data; \ - const lc_opt_enum_ ## N ## _items_t *items = var->items; \ - const char *prefix = ""; \ + lc_opt_enum_ ## N ## _var_t *var = (lc_opt_enum_ ## N ## _var_t*)data; \ + const lc_opt_enum_ ## N ## _items_t *items = var->items; \ + const char *prefix = ""; \ TYPE(value) = *var->value; \ int i; \ size_t l = strlen(buf); \ + (void) name; \ + (void) type; \ + (void) len; \ \ if (l >= n) \ return (int)l; \ @@ -102,18 +101,21 @@ int lc_opt_enum_ ## N ## _dump(char *buf, size_t n, LC_UNUSED(const char *name), } \ } \ \ - return strlen(buf); \ + return (int)strlen(buf); \ } \ #define DECL_DUMP_VALS(T, N) \ -int lc_opt_enum_ ## N ## _dump_vals(char *buf, size_t n, LC_UNUSED(const char *name), LC_UNUSED(lc_opt_type_t type), void *data, LC_UNUSED(size_t len)) \ +int lc_opt_enum_ ## N ## _dump_vals(char *buf, size_t n, const char *name, lc_opt_type_t type, void *data, size_t len) \ { \ - lc_opt_enum_ ## N ## _var_t *var = data; \ - const lc_opt_enum_ ## N ## _items_t *items = var->items; \ - const char *prefix = ""; \ + lc_opt_enum_ ## N ## _var_t *var = (lc_opt_enum_ ## N ## _var_t*) data; \ + const lc_opt_enum_ ## N ## _items_t *items = var->items; \ + const char *prefix = ""; \ int i; \ size_t l = strlen(buf); \ + (void) name; \ + (void) type; \ + (void) len; \ \ if (l >= n) \ return (int)l; \ @@ -131,7 +133,7 @@ int lc_opt_enum_ ## N ## _dump_vals(char *buf, size_t n, LC_UNUSED(const char *n prefix = ", "; \ } \ \ - return strlen(buf); \ + return (int)strlen(buf); \ } \