11 #ifndef __VALUE_STRING_H__
12 #define __VALUE_STRING_H__
17 #include "ws_symbol_export.h"
40 #define foo_VALUE_STRING_LIST(XXX) \
41 XXX( FOO_A, 1, "aaa" ) \
42 XXX( FOO_B, 3, "bbb" )
45 VALUE_STRING_ENUM(foo);
49 VALUE_STRING_ARRAY(foo);
52 VALUE_STRING_ARRAY_GLOBAL_DEF(foo);
53 VALUE_STRING_ARRAY_GLOBAL_DCL(foo);
56 #define bar_VALUE_STRING_LIST(XXX) \
60 VALUE_STRING_ENUM2(bar);
61 VALUE_STRING_ARRAY2(bar);
66 #define VALUE_STRING_ENUM( array_name) _VS_ENUM_XXX( array_name, _VS_ENUM_ENTRY)
67 #define VALUE_STRING_ARRAY( array_name) _VS_ARRAY_SC_XXX(array_name, _VS_ARRAY_ENTRY, static)
68 #define VALUE_STRING_ARRAY_GLOBAL_DEF( array_name) _VS_ARRAY_XXX(array_name, _VS_ARRAY_ENTRY)
69 #define VALUE_STRING_ARRAY_GLOBAL_DCL( array_name) _VS_ARRAY_SC_TYPE_NAME(array_name, extern)
71 #define VALUE_STRING_ENUM2( array_name) _VS_ENUM_XXX( array_name, _VS_ENUM_ENTRY2)
72 #define VALUE_STRING_ARRAY2( array_name) _VS_ARRAY_SC_XXX(array_name, _VS_ARRAY_ENTRY2, static)
73 #define VALUE_STRING_ARRAY2_GLOBAL_DEF( array_name) _VS_ARRAY_XXX(array_name, _VS_ARRAY_ENTRY2)
74 #define VALUE_STRING_ARRAY2_GLOBAL_DCL( array_name) _VS_ARRAY_SC_TYPE_NAME(array_name, extern)
77 #define _VS_ENUM_XXX(array_name, macro) \
79 array_name##_VALUE_STRING_LIST(macro) \
80 _##array_name##_ENUM_DUMMY = 0 \
83 #define _VS_ARRAY_SC_XXX(array_name, macro, sc) \
84 _VS_ARRAY_SC_TYPE_NAME(array_name, sc) = { \
85 array_name##_VALUE_STRING_LIST(macro) \
89 #define _VS_ARRAY_XXX(array_name, macro) \
90 _VS_ARRAY_TYPE_NAME(array_name) = { \
91 array_name##_VALUE_STRING_LIST(macro) \
95 #define _VS_ARRAY_SC_TYPE_NAME(array_name, sc) sc const value_string array_name[]
96 #define _VS_ARRAY_TYPE_NAME(array_name) const value_string array_name[]
98 #define _VS_ENUM_ENTRY( name, value, string) name = value,
99 #define _VS_ARRAY_ENTRY(name, value, string) { value, string },
101 #define _VS_ENUM_ENTRY2( name, value) name = value,
102 #define _VS_ARRAY_ENTRY2(name, value) { value, #name },
107 val_to_str(
const guint32 val,
const value_string *vs,
const char *fmt)
117 val_to_str_const(
const guint32 val,
const value_string *vs,
const char *unknown_str);
121 try_val_to_str(
const guint32 val,
const value_string *vs);
125 try_val_to_str_idx(
const guint32 val,
const value_string *vs, gint *idx);
129 char_val_to_str(
char val,
const value_string *vs,
const char *msg);
140 val64_to_str(
const guint64 val,
const val64_string *vs,
const char *fmt)
145 val64_to_str_const(
const guint64 val,
const val64_string *vs,
const char *unknown_str);
149 try_val64_to_str(
const guint64 val,
const val64_string *vs);
153 try_val64_to_str_idx(
const guint64 val,
const val64_string *vs, gint *idx);
159 str_to_val(
const gchar *val,
const value_string *vs,
const guint32 err_val);
163 str_to_val_idx(
const gchar *val,
const value_string *vs);
171 _value_string_match2_t _vs_match2;
172 guint32 _vs_first_value;
173 guint _vs_num_entries;
176 const gchar *_vs_name;
179 #define VALUE_STRING_EXT_VS_P(x) (x)->_vs_p
180 #define VALUE_STRING_EXT_VS_NUM_ENTRIES(x) (x)->_vs_num_entries
181 #define VALUE_STRING_EXT_VS_NAME(x) (x)->_vs_name
186 #define VALUE_STRING_EXT_INIT(x) { _try_val_to_str_ext_init, 0, G_N_ELEMENTS(x)-1, x, #x }
190 value_string_ext_new(
const value_string *vs, guint vs_tot_num_entries,
const gchar *vs_name);
208 val_to_str_ext_const(
const guint32 val,
value_string_ext *vs,
const char *unknown_str);
216 try_val_to_str_idx_ext(
const guint32 val,
value_string_ext *vse, gint *idx);
224 _val64_string_match2_t _vs_match2;
225 guint64 _vs_first_value;
226 guint _vs_num_entries;
229 const gchar *_vs_name;
232 #define VAL64_STRING_EXT_VS_P(x) (x)->_vs_p
233 #define VAL64_STRING_EXT_VS_NUM_ENTRIES(x) (x)->_vs_num_entries
234 #define VAL64_STRING_EXT_VS_NAME(x) (x)->_vs_name
239 #define VAL64_STRING_EXT_INIT(x) { _try_val64_to_str_ext_init, 0, G_N_ELEMENTS(x)-1, x, #x }
243 val64_string_ext_new(
const val64_string *vs, guint vs_tot_num_entries,
const gchar *vs_name);
261 val64_to_str_ext_const(
const guint64 val,
val64_string_ext *vs,
const char *unknown_str);
269 try_val64_to_str_idx_ext(
const guint64 val,
val64_string_ext *vse, gint *idx);
280 str_to_str(
const gchar *val,
const string_string *vs,
const char *fmt)
289 try_str_to_str_idx(
const gchar *val,
const string_string *vs, gint *idx);
301 rval_to_str(
const guint32 val,
const range_string *rs,
const char *fmt)
306 rval_to_str_const(
const guint32 val,
const range_string *rs,
const char *unknown_str);
310 try_rval_to_str(
const guint32 val,
const range_string *rs);
314 try_rval_to_str_idx(
const guint32 val,
const range_string *rs, gint *idx);
318 try_rval64_to_str(
const guint64 val,
const range_string *rs);
322 try_rval64_to_str_idx(
const guint64 val,
const range_string *rs, gint *idx);
328 const size_t value_length;
334 bytesval_to_str(
const guint8 *val,
const size_t val_len,
const bytes_string *bs,
const char *fmt)
339 try_bytesval_to_str(
const guint8 *val,
const size_t val_len,
const bytes_string *bs);
343 bytesprefix_to_str(
const guint8 *haystack,
const size_t haystack_len,
const bytes_string *bs,
const char *fmt)
348 try_bytesprefix_to_str(
const guint8 *haystack,
const size_t haystack_len,
const bytes_string *bs);
Definition: value_string.h:326
Definition: value_string.h:293
Definition: value_string.h:273
Definition: value_string.h:223
Definition: value_string.h:133
Definition: value_string.h:170
Definition: value_string.h:26
Definition: wmem_allocator.h:27