diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2007-02-07 18:56:07 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2007-02-07 18:56:07 +0000 |
commit | 8144684c113165ec937efdc094f520e5510ff8d2 (patch) | |
tree | 9467c24893045828715f569b7fba007b1fa4d428 /epan/uat.h | |
parent | b08d8470e796def879639b184fad9b4b1d5936b0 (diff) |
MSVC does not like mixed declarations and code
* I'm checking in some still unuused work in progress
svn path=/trunk/; revision=20739
Diffstat (limited to 'epan/uat.h')
-rw-r--r-- | epan/uat.h | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/epan/uat.h b/epan/uat.h index 50e3306044..28c8ecbbcd 100644 --- a/epan/uat.h +++ b/epan/uat.h @@ -384,9 +384,9 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, */ #define UAT_VS_DEF(basename,field_name,rec_t,default_val,default_str) \ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, void* vs, void* u2 _U_) {\ - guint i; ((rec_t*)rec)->field_name = default_val; \ + guint i; \ char* str = ep_strndup(buf,len); \ - char* cstr;\ + char* cstr; ((rec_t*)rec)->field_name = default_val; \ for(i=0; ( cstr = ((value_string*)vs)[i].strptr ) ;i++) { \ if (g_str_equal(cstr,str)) { \ ((rec_t*)rec)->field_name = ((value_string*)vs)[i].value; return; } } } \ @@ -403,8 +403,33 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, {#field_name, PT_TXTMOD_ENUM,{uat_fld_chk_enum,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{&(enum),&(enum),&(enum)},&(enum),FLDFILL} +/* + * PROTO macros + */ + +#define UAT_PROTO_DEF(basename,field_name,rec_t) \ +static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, void* vs, void* u2 _U_) {\ + if (len) { \ + char* name = ep_strndup(strptr,len); g_strdown(name); g_strchug(name); \ + ((rec_t*)rec)->field_name = find_dissector(name); \ + } else { ((rec_t*)rec)->field_name = find_dissector("data"); } } \ +static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, void* vs, void* u2 _U_) {\ + *out_ptr = ep_strdup(dissector_handle_get_short_name(((rec_t*)rec)->field_name)); g_strdown(str); \ + *out_len = strlen(*out_ptr); } + +#define UAT_PROTO_DEF(basename,field_name,rec_t) \ +static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, void* vs, void* u2 _U_) {\ + if (len) { \ + char* name = ep_strndup(strptr,len); g_strdown(name); g_strchug(name); \ + ((rec_t*)rec)->field_name = find_dissector(name); \ + } else { ((rec_t*)rec)->field_name = find_dissector("data"); } } \ +static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, void* vs, void* u2 _U_) {\ + *out_ptr = ep_strdup(dissector_handle_get_short_name(((rec_t*)rec)->field_name)); g_strdown(str); \ + *out_len = strlen(*out_ptr); } +#define UAT_FLD_PROTO(basename,field_name) \ + {#field_name, PT_TXTMOD_STRING,{uat_fld_chk_proto,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{NULL,NULL,NULL},NULL,FLDFILL} |