Wireshark
4.5.0
The Wireshark network protocol analyzer
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
Variables
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
m
o
p
r
s
t
u
v
w
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
Variables
Typedefs
a
b
c
d
e
f
g
h
i
m
p
r
s
t
u
v
w
Enumerations
Enumerator
a
b
c
e
f
h
i
n
o
r
s
t
w
Macros
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
Loading...
Searching...
No Matches
epan
params.h
Go to the documentation of this file.
1
12
#ifndef __PARAMS_H__
13
#define __PARAMS_H__
14
15
/*
16
* Definition of a value for an enumerated type.
17
*
18
* "name" is the name one would use on the command line for the value.
19
* "description" is the description of the value, used in combo boxes/
20
* option menus.
21
* "value" is the value.
22
*/
23
typedef
struct
{
24
const
char
*name;
25
const
char
*description;
26
int
value;
27
}
enum_val_t
;
23
typedef
struct
{
…
};
28
29
/* ----- Public enum_val_t "Helper" macros ----- */
30
/*
31
* Reuse the macro format of the list of value strings (that is used by value_string.h
32
* for generating definitions of enum and/or value strings array) to generating
33
* enum_val_t array. For example, there is a macro of a value strings list like:
34
*
35
* #define foo_VALUE_STRING_LIST(XXX) \
36
* XXX( FOO_A, 1, "aaa" ) \
37
* XXX( FOO_B, 3, "bbb" )
38
*
39
* The code VS_LIST_TO_ENUM_VAL_T_ARRAY_STATIC(foo, foo_ev); will define a static enum_val_t array:
40
*
41
* static const enum_val_t foo_ev[] = {
42
* { "aaa", "aaa", 1 },
43
* { "bbb", "bbb", 3 },
44
* { NULL, NULL, 0 }
45
* };
46
*
47
* The code VS_LIST_TO_ENUM_VAL_T_ARRAY_GLOBAL_DEF(foo, foo_ev); will define a global enum_val_t array:
48
*
49
* const enum_val_t foo_ev[] = {
50
* { "aaa", "aaa", 1 },
51
* { "bbb", "bbb", 3 },
52
* { NULL, NULL, 0 }
53
* };
54
*
55
* The code VS_LIST_TO_ENUM_VAL_T_ARRAY_GLOBAL_DCL(foo_ev); will declare a extern enum_val_t array:
56
*
57
* extern const enum_val_t foo_ev[];
58
*/
59
#define VS_LIST_TO_ENUM_VAL_T_ARRAY_STATIC( array_name, new_array_name) static _EV_ARRAY_XXX(array_name, new_array_name, _VALUE_STRING_LIST, _EV_ARRAY_ENTRY_FROM_VS)
60
#define VS_LIST_TO_ENUM_VAL_T_ARRAY_GLOBAL_DEF(array_name, new_array_name) _EV_ARRAY_XXX(array_name, new_array_name, _VALUE_STRING_LIST, _EV_ARRAY_ENTRY_FROM_VS)
61
#define VS_LIST_TO_ENUM_VAL_T_ARRAY_GLOBAL_DCL(new_array_name) extern const enum_val_t new_array_name[]
62
63
/*
64
* Provide the capability to define a list of enum_val_t(s) once and
65
* then to expand the list as an enum and/or as a enum_val_t array.:
66
*
67
* #define foo2_ENUM_VAL_T_LIST(XXX) \
68
* XXX( FOO_A, 1, "aaa", "The description of aaa" ) \
69
* XXX( FOO_B, 3, "bbb", "The description of bbb" )
70
*
71
* The code ENUM_VAL_T_ENUM(foo2); will define an enumeration type:
72
*
73
* enum {
74
* FOO_A = 1,
75
* FOO_B = 3,
76
* _foo_ENUM_DUMMY = 0
77
* };
78
* Note, you can use code "typedef ENUM_VAL_T_ENUM(foo2) enum_foo_t;" to define a
79
* named enumeration.
80
*
81
* The code ENUM_VAL_T_ARRAY_STATIC(foo2); will define a static enum_val_t array:
82
*
83
* static const enum_val_t foo2[] = {
84
* { "aaa", "The description of aaa", 1 },
85
* { "bbb", "The description of bbb", 3 },
86
* { NULL, NULL, 0 }
87
* };
88
*
89
* The code ENUM_VAL_T_ARRAY_GLOBAL_DEF(foo2); will define a global enum_val_t array:
90
*
91
* const enum_val_t foo2[] = {
92
* { "aaa", "The description of aaa", 1 },
93
* { "bbb", "The description of bbb", 3 },
94
* { NULL, NULL, 0 }
95
* };
96
*
97
* The code VS_LIST_TO_ENUM_VAL_T_ARRAY_GLOBAL_DCL(foo2); will declare a extern enum_val_t array:
98
*
99
* extern const enum_val_t foo2[];
100
*/
101
#define ENUM_VAL_T_ENUM(array_name) _EV_ENUM_XXX(array_name, _ENUM_VAL_T_LIST, _EV_ENUM_ENTRY)
102
#define ENUM_VAL_T_ARRAY_STATIC( array_name) static _EV_ARRAY_XXX(array_name, array_name, _ENUM_VAL_T_LIST, _EV_ARRAY_ENTRY)
103
#define ENUM_VAL_T_ARRAY_GLOBAL_DEF(array_name) _EV_ARRAY_XXX(array_name, array_name, _ENUM_VAL_T_LIST, _EV_ARRAY_ENTRY)
104
#define ENUM_VAL_T_ARRAY_GLOBAL_DCL(array_name) extern const enum_val_t array_name[]
105
106
/*
107
* Reuse the format of enum_val list to create value_string array:
108
*
109
* The code ENUM_VAL_T_TO_VS_ARRAY_STATIC(foo2, foo2_vs); will define a static value_string array from an enum_val list:
110
*
111
* static const value_string foo2_vs[] = {
112
* { 1, "aaa" },
113
* { 3, "bbb" },
114
* { 0, NULL }
115
* };
116
*
117
* The code ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DEF(foo2, foo2_vs); will define a global value_string array from an enum_val list:
118
*
119
* const value_string foo2_vs[] = {
120
* { 1, "aaa" },
121
* { 3, "bbb" },
122
* { 0, NULL }
123
* };
124
*
125
* The code ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DCL(foo2_vs); will declare a extern value_string array from an enum_val list:
126
*
127
* extern const value_string foo2_vs[];
128
*
129
* The macros ENUM_VAL_T_TO_VS_ARRAY_STATIC2, ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DEF2 and ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DCL2
130
* are similar to ENUM_VAL_T_TO_VS_ARRAY_STATIC, ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DEF and ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DCL
131
* except that ENUM_VAL_T_TO_VS_ARRAY_XXX(s) uses the 'name' field of enum_val list as the 'string' field of value_string,
132
* and ENUM_VAL_T_TO_VS_ARRAY_XXX2(s) uses the 'enum_name' field.
133
*
134
* Similarly, The macros ENUM_VAL_T_TO_VS_ARRAY_XXX3(s) uses the 'description' field of enum_val list as the 'string'
135
* field of value_string.
136
*/
137
#define ENUM_VAL_T_TO_VS_ARRAY_STATIC( array_name, new_array_name) static _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, _ENUM_VAL_T_LIST, _VS_ARRAY_ENTRY_FROM_EV)
138
#define ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DEF(array_name, new_array_name) _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, _ENUM_VAL_T_LIST, _VS_ARRAY_ENTRY_FROM_EV)
139
#define ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DCL(new_array_name) extern const value_string new_array_name[]
140
141
#define ENUM_VAL_T_TO_VS_ARRAY_STATIC2( array_name, new_array_name) static _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, _ENUM_VAL_T_LIST, _VS_ARRAY_ENTRY_FROM_EV2)
142
#define ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DEF2(array_name, new_array_name) _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, _ENUM_VAL_T_LIST, _VS_ARRAY_ENTRY_FROM_EV2)
143
#define ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DCL2(new_array_name) extern const value_string new_array_name[]
144
145
#define ENUM_VAL_T_TO_VS_ARRAY_STATIC3( array_name, new_array_name) static _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, _ENUM_VAL_T_LIST, _VS_ARRAY_ENTRY_FROM_EV3)
146
#define ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DEF3(array_name, new_array_name) _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, _ENUM_VAL_T_LIST, _VS_ARRAY_ENTRY_FROM_EV3)
147
#define ENUM_VAL_T_TO_VS_ARRAY_GLOBAL_DCL3(new_array_name) extern const value_string new_array_name[]
148
149
/* -- Private macros -- */
150
#define _EV_ARRAY_XXX(array_name, new_array_name, array_suffix, macro) \
151
const enum_val_t new_array_name[] = { \
152
array_name##array_suffix(macro) \
153
{ NULL, NULL, 0 } \
154
}
155
156
#define _EV_ARRAY_ENTRY(enum_name, value, name, description) { name, description, value },
157
#define _EV_ARRAY_ENTRY_FROM_VS(enum_name, value, string) { string, string, value },
158
159
#define _EV_ENUM_XXX(array_name, array_suffix, macro) \
160
enum { \
161
array_name##array_suffix(macro) \
162
_##array_name##_ENUM_DUMMY = 0 \
163
}
164
165
#define _EV_ENUM_ENTRY(enum_name, value, name, description) enum_name = value,
166
167
#define _EV_TO_VS_ARRAY_XXX(array_name, new_array_name, array_suffix, macro) \
168
const value_string new_array_name[] = { \
169
array_name##array_suffix(macro) \
170
{ 0, NULL } \
171
}
172
#define _VS_ARRAY_ENTRY_FROM_EV(enum_name, value, name, description) { value, name }
173
#define _VS_ARRAY_ENTRY_FROM_EV2(enum_name, value, name, description) { value, #enum_name }
174
#define _VS_ARRAY_ENTRY_FROM_EV3(enum_name, value, name, description) { value, description }
175
176
#endif
/* params.h */
177
enum_val_t
Definition
params.h:23
Generated by
1.9.8