diff options
Diffstat (limited to 'contrib/utility/Documentation/Thoughts/Enum/EnumCount')
-rw-r--r-- | contrib/utility/Documentation/Thoughts/Enum/EnumCount | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/contrib/utility/Documentation/Thoughts/Enum/EnumCount b/contrib/utility/Documentation/Thoughts/Enum/EnumCount deleted file mode 100644 index be8b252d4de..00000000000 --- a/contrib/utility/Documentation/Thoughts/Enum/EnumCount +++ /dev/null @@ -1,95 +0,0 @@ -From: Gianni Mariani <gi2nospam@mariani.ws> -Date: 26 Jul 2003 04:52:43 GMT -Newsgroups: comp.lang.c++ -Subject: Re: enum count - -Clive wrote: -> If you have an enum, is there any way during execution to find the number of -> values in the enum? -> Say I have, -> -> enum great { five, ten, fifteen }; -> -> How could I get the number 3 from that? -> -> - -replace the enums with objects that report themselves to a registry. - - -I have done it in the past using a template ... - -templace <typename base> -class ExposedEnum : public base -{ - public: - int enum_val; - ExposedEnum( int number ) - : enum_val( number ) - { - ExposedEnumRegister<base>::Register( *this ); - } - - ExposedEnum( int number ) - : enum_val( ExposedEnumRegister<base>::GetNextNumber() ) - { - ExposedEnumRegister<base>::Register( *this ); - } - - - -// some more stuff ... - - operator int () const - { - return enum_val; - } - - explicit ExposedEnum( const ExposedEnum & foo ); -}; - - -template <typename base> -class ExposedEnumRegister -{ - - static int GetNextNumber .... - - static void Register .... - - static int Count .... - -} - - -Now you can forward declare them... - -extern ExposedEnum< great > five; - -extern ExposedEnum< great > ten; - -extern ExposedEnum< great > fifteen; - - - - -In a cpp file you can instantiate them. - -ExposedEnum< great > five( 5 ); - -ExposedEnum< great > ten( 10 ); - -ExposedEnum< great > fifteen; - - -Now, if you want to know how many you have : - -ExposedEnumRegister< great >::Count(); - - - -Disclaimer - it's an outline only, yes it's incomplete. - -G - -$Id$ |