
Jeffrey Lee Hellrung, Jr.-2 wrote:
On Fri, Mar 18, 2011 at 2:10 PM, Vicente Botet <vicente.botet@wanadoo.fr>wrote:
Hi,
I'm developing a scoped enum library that use an emulation wrapping the native enum on a class to get scoped enumerators.
I need some traits, to get the native type from the emulation, and the coping class from the native one. In addition there is an underlying type that is used to store the enumerators. Next follows the names I have use in the library:
native_type::type underlying_type::type scoping_type::type
In addition I have defined some functions that make the conversions from these types
template native_type::type native_value(ScopedEnum e);
template underlying_type::type underlying_value(ScopedEnum e);
I have defined all these under the boost::enums namespace.
Do you have a better proposal for these (meta-)functions?
If you need more details you can take a look in the sandbow/enums directory http://svn.boost.org/svn/boost/sandbox/enums/libs/enums/doc/html/index.html
Best, Vicente
P.S. Note native-type and native_value are yet in the doc as enum_type and enum_value. The tutorial is really in a very draft state :(
Perhaps you can summarize what these types and (meta-)functions are suppose to be/do? I trolled through the documentation but...it's kind of long for me to go through the whole thing at the moment :/
Yes of course. When scoped enum classes are available we can use enum class EnumClass : short {E1, ... En}; In this case the scoped enum class is already an enum. is_enum::value is true typedef EnumClass EnumClassNative; native_type::type is EnumClass underlying_type::type is short scoping_type::type is EnumClass When scoped enum classes is not supported the emulation uses the well known schema template class EnumClass { public: //! c++98 enum type typedef enum {E1, ... En} type; //! underlying type typedef short underlying_type; private: underlying_type val_; ... }; and of course EnumClass is not an enum :( is_enum::value is false typedef EnumClass::type EnumClassNative; native_type::type is EnumClassNative underlying_type::type is short scoping_type::type is EnumClass Let me know if you need more details. Best, Vicente -- View this message in context: http://boost.2283326.n4.nabble.com/Enums-naming-question-tp3388473p3388818.h... Sent from the Boost - Dev mailing list archive at Nabble.com.