Wireshark mailing list archives
Re: const'ness of value_string_ext
From: darkjames-ws () darkjames pl
Date: Fri, 25 Jul 2014 09:01:03 +0200
Hi, On Thu, Jul 24, 2014 at 04:35:07PM -0400, Kevin Cox wrote:
2: Change everything. Pros: - Full compiler error checking and type safety. Cons: - Hard - May change dissector API. I was wondering what everyone else thought and what should be done to improve the safety of this code.
a/ For C90 (C99?) compilers (gcc/clang) use structure^W union initializer:
instead of const void *strings;
union {
const void *data;
const value_string *vs;
value_string_ext *vse;
const true_false_string *tfs;
...
} u;
add new macros to initialize this union correctly:
#ifdef C_SUPPORTING_STRUCTURE_INITIALIZER
#define VS_INIT(x) { .vs = x; }
#define VSE_INIT(x) { .vse = x; }
#else
#define VS_INIT(x) { x }
#define VSE_INIT(x) { x }
#endif
change VALS()/ TFS() macros to access union instead of cast.
b/ For any compiler:
instead of const void *strings;
do: const struct field_extension *field_ext;
struct field_extension { int type; }
#define FIELD_EXT(vs) &(vs).base
struct field_extension_vs { struct field_extension base; const value_string *vs; }
#define FIELD_INITIALIZE_VS(vs) { { FIELD_EXT_VS }, vs }
struct field_extension_vse { struct field_extension base; value_string_ext *vse; }
#define FIELD_INITIALIZE_VSE(vse) { { FIELD_EXT_VSE }, vse }
Q: Can we do b/ easier if we go to C++?
Q: Is a/ union initializer supported by all new modern C++ compilers?
For MSVC (AFAIR only when compiling C++ code) I see it was supported in MSVC2005:
http://msdn.microsoft.com/en-us/library/81k8cwsz%28v=vs.80%29.aspx
Cheers,
Jakub.
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- const'ness of value_string_ext Kevin Cox (Jul 24)
- Re: const'ness of value_string_ext Evan Huus (Jul 24)
- Re: const'ness of value_string_ext Kevin Cox (Jul 24)
- Re: const'ness of value_string_ext darkjames-ws (Jul 25)
- Re: const'ness of value_string_ext Kevin Cox (Jul 25)
- Re: const'ness of value_string_ext Evan Huus (Jul 24)
