"toString(enum.value)" How?

Jason House jason.james.house at gmail.com
Sun Jul 8 12:18:03 PDT 2007


The topic of converting enums to strings has come up before.

IIRC, the problem is that enums tend to be used for one of two purposes: 
a collection of fixed constants, and bit fields/masks.  While the former 
may be easy to do, the latter presents a problem...  Especially when the 
values of different fields overlap.

Ingo Oeser wrote:
> Hi,
> 
> while trying to code/port some stuff heavily relying on enums,
> I asked myself, whether there is a nice and elegant way
> to actually get the name of an enum value as string.
> 
> enum Funny {
>         UNKNOWN,
>         MAKES_ME_SMILE,
>         LAUGHING_OUT_LOUD,
>         ROLLING_ON_THE_FLOOR_LAUGHING
> }
> 
> void main()
> {
>         Funny joke = Funny.LAUGHING_OUT_LOUD;
>         wrifeln("%s", toString(joke));
> }
> 
> should print "Funny.LAUGHING_OUT_LOUD". I could also
> live with "LAUGHING_OUT_LOUD". But keeping these two tables
> (string[] and enum) in sync requires some kind of preprocessor 
> and D has none.
> 
> How is that kind of problem solved in D WITHOUT 
> keeping two tables?
> 
> Many thanks and Best Regards
> 
> Ingo Oeser
> 


More information about the Digitalmars-d-learn mailing list