11#ifndef __VALUE_STRING_H__
12#define __VALUE_STRING_H__
16#include "ws_symbol_export.h"
41 #define foo_VALUE_STRING_LIST(XXX) \
42 XXX( FOO_A, 1, "aaa" ) \
43 XXX( FOO_B, 3, "bbb" )
46 VALUE_STRING_ENUM(foo);
50 VALUE_STRING_ARRAY(foo);
53 VALUE_STRING_ARRAY_GLOBAL_DEF(foo);
54 VALUE_STRING_ARRAY_GLOBAL_DCL(foo);
57 #define bar_VALUE_STRING_LIST(XXX) \
61 VALUE_STRING_ENUM2(bar);
62 VALUE_STRING_ARRAY2(bar);
67#define VALUE_STRING_ENUM( array_name) _VS_ENUM_XXX( array_name, _VS_ENUM_ENTRY)
68#define VALUE_STRING_ARRAY( array_name) _VS_ARRAY_SC_XXX(array_name, _VS_ARRAY_ENTRY, static)
69#define VALUE_STRING_ARRAY_GLOBAL_DEF( array_name) _VS_ARRAY_XXX(array_name, _VS_ARRAY_ENTRY)
70#define VALUE_STRING_ARRAY_GLOBAL_DCL( array_name) _VS_ARRAY_SC_TYPE_NAME(array_name, extern)
72#define VALUE_STRING_ENUM2( array_name) _VS_ENUM_XXX( array_name, _VS_ENUM_ENTRY2)
73#define VALUE_STRING_ARRAY2( array_name) _VS_ARRAY_SC_XXX(array_name, _VS_ARRAY_ENTRY2, static)
74#define VALUE_STRING_ARRAY2_GLOBAL_DEF( array_name) _VS_ARRAY_XXX(array_name, _VS_ARRAY_ENTRY2)
75#define VALUE_STRING_ARRAY2_GLOBAL_DCL( array_name) _VS_ARRAY_SC_TYPE_NAME(array_name, extern)
78#define _VS_ENUM_XXX(array_name, macro) \
80 array_name##_VALUE_STRING_LIST(macro) \
81 _##array_name##_ENUM_DUMMY = 0 \
84#define _VS_ARRAY_SC_XXX(array_name, macro, sc) \
85 _VS_ARRAY_SC_TYPE_NAME(array_name, sc) = { \
86 array_name##_VALUE_STRING_LIST(macro) \
90#define _VS_ARRAY_XXX(array_name, macro) \
91 _VS_ARRAY_TYPE_NAME(array_name) = { \
92 array_name##_VALUE_STRING_LIST(macro) \
96#define _VS_ARRAY_SC_TYPE_NAME(array_name, sc) sc const value_string array_name[]
97#define _VS_ARRAY_TYPE_NAME(array_name) const value_string array_name[]
99#define _VS_ENUM_ENTRY( name, value, string) name = value,
100#define _VS_ARRAY_ENTRY(name, value, string) { value, string },
102#define _VS_ENUM_ENTRY2( name, value) name = value,
103#define _VS_ARRAY_ENTRY2(name, value) { value, #name },
108val_to_str(
const uint32_t val,
const value_string *vs,
const char *fmt)
118val_to_str_const(
const uint32_t val,
const value_string *vs,
const char *unknown_str);
122try_val_to_str(
const uint32_t val,
const value_string *vs);
126try_val_to_str_idx(
const uint32_t val,
const value_string *vs,
int *idx);
130char_val_to_str(
char val,
const value_string *vs,
const char *msg);
141val64_to_str(
const uint64_t val,
const val64_string *vs,
const char *fmt)
146val64_to_str_const(
const uint64_t val,
const val64_string *vs,
const char *unknown_str);
150try_val64_to_str(
const uint64_t val,
const val64_string *vs);
154try_val64_to_str_idx(
const uint64_t val,
const val64_string *vs,
int *idx);
160str_to_val(
const char *val,
const value_string *vs,
const uint32_t err_val);
172 _value_string_match2_t _vs_match2;
173 uint32_t _vs_first_value;
174 unsigned _vs_num_entries;
177 const char *_vs_name;
180#define VALUE_STRING_EXT_VS_P(x) (x)->_vs_p
181#define VALUE_STRING_EXT_VS_NUM_ENTRIES(x) (x)->_vs_num_entries
182#define VALUE_STRING_EXT_VS_NAME(x) (x)->_vs_name
187#define VALUE_STRING_EXT_INIT(x) { _try_val_to_str_ext_init, 0, G_N_ELEMENTS(x)-1, x, #x }
191value_string_ext_new(
const value_string *vs,
unsigned vs_tot_num_entries,
const char *vs_name);
209val_to_str_ext_const(
const uint32_t val,
value_string_ext *vs,
const char *unknown_str);
225 _val64_string_match2_t _vs_match2;
226 uint64_t _vs_first_value;
227 unsigned _vs_num_entries;
230 const char *_vs_name;
233#define VAL64_STRING_EXT_VS_P(x) (x)->_vs_p
234#define VAL64_STRING_EXT_VS_NUM_ENTRIES(x) (x)->_vs_num_entries
235#define VAL64_STRING_EXT_VS_NAME(x) (x)->_vs_name
239value_str_value_compare(
const void* a,
const void* b);
244#define VAL64_STRING_EXT_INIT(x) { _try_val64_to_str_ext_init, 0, G_N_ELEMENTS(x)-1, x, #x }
248val64_string_ext_new(
const val64_string *vs,
unsigned vs_tot_num_entries,
const char *vs_name);
266val64_to_str_ext_const(
const uint64_t val,
val64_string_ext *vs,
const char *unknown_str);
274try_val64_to_str_idx_ext(
const uint64_t val,
val64_string_ext *vse,
int *idx);
285str_to_str(
const char *val,
const string_string *vs,
const char *fmt)
294try_str_to_str_idx(
const char *val,
const string_string *vs,
int *idx);
306rval_to_str(
const uint32_t val,
const range_string *rs,
const char *fmt)
311rval_to_str_const(
const uint32_t val,
const range_string *rs,
const char *unknown_str);
315try_rval_to_str(
const uint32_t val,
const range_string *rs);
319try_rval_to_str_idx(
const uint32_t val,
const range_string *rs,
int *idx);
323try_rval64_to_str(
const uint64_t val,
const range_string *rs);
327try_rval64_to_str_idx(
const uint64_t val,
const range_string *rs,
int *idx);
343 const uint8_t *value;
344 const size_t value_length;
350bytesval_to_str(
const uint8_t *val,
const size_t val_len,
const bytes_string *bs,
const char *fmt)
355try_bytesval_to_str(
const uint8_t *val,
const size_t val_len,
const bytes_string *bs);
359bytesprefix_to_str(
const uint8_t *haystack,
const size_t haystack_len,
const bytes_string *bs,
const char *fmt)
364try_bytesprefix_to_str(
const uint8_t *haystack,
const size_t haystack_len,
const bytes_string *bs);
Definition value_string.h:342
Definition value_string.h:298
Definition value_string.h:278
Definition value_string.h:331
Definition value_string.h:224
Definition value_string.h:134
Definition value_string.h:171
Definition value_string.h:27
Definition wmem_allocator.h:27