enum's & KConfigBase

Stefan Teleman steleman at nyc.rr.com
Mon Jan 16 23:40:14 GMT 2006


On Monday 16 January 2006 17:41, Dirk Mueller wrote:
> I'm not so sure if its a good idea to convert enums to integers and back.
> enum's tend to be reordered within applications, which break binary
> compatibility (not a problem usually for inner-apps usage) but then also
> breaks configuration reading. This is a major problem. KDE applications
> break already way too often their own configuration (I cannot remember how
> often already I had to redo the very same settings in e.g. konversation
> because the way the configuration key was stored was changed *yet another*
> time). We shouldn't make it too easy to keep that nasty habit.

Not to mention the fact that in C++ the sign-ness and the underlying type used 
to represent an enum type are implementation-defined, therefore the 
conversion to a signed integer creates a big portability problem right from 
the start. It is common to have enums implemented as bitfields.

ISO/IEC:14882:2003.7.2.5

The underlying type of an enumeration is an integral type that can represent 
all the enumerator values defined in the enumeration. It is 
implementation-defined which integral type is used as the underlying type for 
an enumeration except that the underlying type shall not be larger than [int] 
unless the value of an enumerator cannot fit in an [int] or [unsigned int]. 
[ ... ] The value of sizeof() applied to an enumeration type, an object of 
enumeration type, or an enumerator, is the value of sizeof() applied to the 
underlying type.

ISO/IEC:14882:2003.7.2.6

For an enumeration when E<min> is the smallest enumerator and E<max> is the 
largest, the values of the enumeration are the values of the underlying type 
in the range B<min> to B<max>, where B<min> and B<max> are, respectively, the 
smallest and largest values of the smallest bit-field that can store E<min> 
and E<max>.

--Stefan

-- 
Stefan Teleman          'Nobody Expects the Spanish Inquisition'
steleman at nyc.rr.com                          -Monty Python




More information about the kde-core-devel mailing list