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.