Wireshark-dev: Re: [Wireshark-dev] Bug 8416 - remove C++ incompatibilities from packet-pw-atm.c
From: Evan Huus <eapache@xxxxxxxxx>
Date: Thu, 28 Feb 2013 21:50:41 -0500
On Thu, Feb 28, 2013 at 9:39 PM, Ed Beroset <beroset@xxxxxxxxxxxxxx> wrote:
> Jaap Keuter <jaap.keuter@xxxxxxxxx>
>
>>
>>What I would like to see is the abolishment of the pwc_packet_properties_t type
>>altogether. This is _not_ an enum.
>
> I agree, and have come across another such "enum abuse" instance that may be harder to address. Specifically, in the header file gmessages.h there is a similar typedef enum called GLogLevelFlags which is also intended to provide names for bitflags rather than actually enumerate.  This construct is used a number of places in the Wireshark code (such as line 3169 of plugins/asn1/packet-asn1.c).  Adding a cast quiets the compiler, but is there a better way that doesn't require rewriting glib-2.0?
>
>         mylogh = g_log_set_handler (NULL, GLogLevelFlags(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
>                                                     | G_LOG_FLAG_RECURSION), my_log_handler, NULL);
>
> Ed

Not off the top of my head. Fortunately, the vast majority of
G_LOG_LEVEL_* uses are in g_log calls that shouldn't cause problems -
there are only five or six cases I noticed where we were doing
bit-fieldy things with them.