11 #ifndef __VALUE_STRING_H__ 12 #define __VALUE_STRING_H__ 19 #include "ws_symbol_export.h" 20 #include "wmem/wmem.h" 38 #define foo_VALUE_STRING_LIST(XXX) \ 39 XXX( FOO_A, 1, "aaa" ) \ 40 XXX( FOO_B, 3, "bbb" ) 43 VALUE_STRING_ENUM(foo);
47 VALUE_STRING_ARRAY(foo);
50 VALUE_STRING_ARRAY_GLOBAL_DEF(foo);
51 VALUE_STRING_ARRAY_GLOBAL_DCL(foo);
54 #define bar_VALUE_STRING_LIST(XXX) \ 58 VALUE_STRING_ENUM2(bar);
59 VALUE_STRING_ARRAY2(bar);
64 #define VALUE_STRING_ENUM( array_name) _VS_ENUM_XXX( array_name, _VS_ENUM_ENTRY) 65 #define VALUE_STRING_ARRAY( array_name) _VS_ARRAY_SC_XXX(array_name, _VS_ARRAY_ENTRY, static) 66 #define VALUE_STRING_ARRAY_GLOBAL_DEF( array_name) _VS_ARRAY_XXX(array_name, _VS_ARRAY_ENTRY) 67 #define VALUE_STRING_ARRAY_GLOBAL_DCL( array_name) _VS_ARRAY_SC_TYPE_NAME(array_name, extern) 69 #define VALUE_STRING_ENUM2( array_name) _VS_ENUM_XXX( array_name, _VS_ENUM_ENTRY2) 70 #define VALUE_STRING_ARRAY2( array_name) _VS_ARRAY_SC_XXX(array_name, _VS_ARRAY_ENTRY2, static) 71 #define VALUE_STRING_ARRAY2_GLOBAL_DEF( array_name) _VS_ARRAY_XXX(array_name, _VS_ARRAY_ENTRY2) 72 #define VALUE_STRING_ARRAY2_GLOBAL_DCL( array_name) _VS_ARRAY_SC_TYPE_NAME(array_name, extern) 75 #define _VS_ENUM_XXX(array_name, macro) \ 77 array_name##_VALUE_STRING_LIST(macro) \ 78 _##array_name##_ENUM_DUMMY = 0 \ 81 #define _VS_ARRAY_SC_XXX(array_name, macro, sc) \ 82 _VS_ARRAY_SC_TYPE_NAME(array_name, sc) = { \ 83 array_name##_VALUE_STRING_LIST(macro) \ 87 #define _VS_ARRAY_XXX(array_name, macro) \ 88 _VS_ARRAY_TYPE_NAME(array_name) = { \ 89 array_name##_VALUE_STRING_LIST(macro) \ 93 #define _VS_ARRAY_SC_TYPE_NAME(array_name, sc) sc const value_string array_name[] 94 #define _VS_ARRAY_TYPE_NAME(array_name) const value_string array_name[] 96 #define _VS_ENUM_ENTRY( name, value, string) name = value, 97 #define _VS_ARRAY_ENTRY(name, value, string) { value, string }, 99 #define _VS_ENUM_ENTRY2( name, value) name = value, 100 #define _VS_ARRAY_ENTRY2(name, value) { value, #name }, 105 val_to_str(
const guint32 val,
const value_string *vs,
const char *fmt)
115 val_to_str_const(
const guint32 val,
const value_string *vs,
const char *unknown_str);
119 try_val_to_str(
const guint32 val,
const value_string *vs);
123 try_val_to_str_idx(
const guint32 val,
const value_string *vs, gint *idx);
134 val64_to_str(
const guint64 val,
const val64_string *vs,
const char *fmt)
139 val64_to_str_const(
const guint64 val,
const val64_string *vs,
const char *unknown_str);
143 try_val64_to_str(
const guint64 val,
const val64_string *vs);
147 try_val64_to_str_idx(
const guint64 val,
const val64_string *vs, gint *idx);
153 str_to_val(
const gchar *val,
const value_string *vs,
const guint32 err_val);
157 str_to_val_idx(
const gchar *val,
const value_string *vs);
162 typedef const value_string *(*_value_string_match2_t)(
const guint32, value_string_ext*);
165 _value_string_match2_t _vs_match2;
166 guint32 _vs_first_value;
167 guint _vs_num_entries;
170 const gchar *_vs_name;
173 #define VALUE_STRING_EXT_VS_P(x) (x)->_vs_p 174 #define VALUE_STRING_EXT_VS_NUM_ENTRIES(x) (x)->_vs_num_entries 175 #define VALUE_STRING_EXT_VS_NAME(x) (x)->_vs_name 179 _try_val_to_str_ext_init(
const guint32 val, value_string_ext *vse);
180 #define VALUE_STRING_EXT_INIT(x) { _try_val_to_str_ext_init, 0, G_N_ELEMENTS(x)-1, x, #x } 184 value_string_ext_new(
const value_string *vs, guint vs_tot_num_entries,
const gchar *vs_name);
188 value_string_ext_free(value_string_ext *vse);
192 val_to_str_ext(
const guint32 val, value_string_ext *vse,
const char *fmt)
197 val_to_str_ext_wmem(
wmem_allocator_t *scope,
const guint32 val, value_string_ext *vse,
const char *fmt)
202 val_to_str_ext_const(
const guint32 val, value_string_ext *vs,
const char *unknown_str);
206 try_val_to_str_ext(
const guint32 val, value_string_ext *vse);
210 try_val_to_str_idx_ext(
const guint32 val, value_string_ext *vse, gint *idx);
221 str_to_str(
const gchar *val,
const string_string *vs,
const char *fmt)
230 try_str_to_str_idx(
const gchar *val,
const string_string *vs, gint *idx);
242 rval_to_str(
const guint32 val,
const range_string *rs,
const char *fmt)
247 rval_to_str_const(
const guint32 val,
const range_string *rs,
const char *unknown_str);
251 try_rval_to_str(
const guint32 val,
const range_string *rs);
255 try_rval_to_str_idx(
const guint32 val,
const range_string *rs, gint *idx);
259 try_rval64_to_str(
const guint64 val,
const range_string *rs);
263 try_rval64_to_str_idx(
const guint64 val,
const range_string *rs, gint *idx);
269 const size_t value_length;
275 bytesval_to_str(
const guint8 *val,
const size_t val_len,
const bytes_string *bs,
const char *fmt)
280 try_bytesval_to_str(
const guint8 *val,
const size_t val_len,
const bytes_string *bs);
284 bytesprefix_to_str(
const guint8 *haystack,
const size_t haystack_len,
const bytes_string *bs,
const char *fmt)
289 try_bytesprefix_to_str(
const guint8 *haystack,
const size_t haystack_len,
const bytes_string *bs);
295 value_string_ext_validate(
const value_string_ext *vse);
299 value_string_ext_match_type_str(
const value_string_ext *vse);
Definition: value_string.h:234
Definition: value_string.h:127
Definition: value_string.h:267
Definition: wmem_allocator.h:26
Definition: value_string.h:214
Definition: value_string.h:24
Definition: value_string.h:164