HDK
|
#include <enum.h>
Public Member Functions | |
TfEnum () | |
Default constructor assigns integer value zero. More... | |
template<class T > | |
TfEnum (T value, std::enable_if_t< std::is_enum< T >::value > *=0) | |
Initializes value to enum variable value of enum type T . More... | |
TfEnum (const std::type_info &ti, int value) | |
bool | operator== (const TfEnum &t) const |
True if *this and t have both the same type and value. More... | |
bool | operator!= (const TfEnum &t) const |
bool | operator< (const TfEnum &t) const |
bool | operator<= (const TfEnum &t) const |
bool | operator> (const TfEnum &t) const |
bool | operator>= (const TfEnum &t) const |
template<class T > | |
std::enable_if_t< std::is_enum < T >::value, bool > | operator== (T value) const |
True if *this has been assigned with value . More... | |
template<class T > | |
std::enable_if_t< std::is_enum < T >::value, bool > | operator!= (T value) const |
False if *this has been assigned with value . More... | |
template<class T > | |
bool | IsA () const |
True if *this has been assigned any enumerated value of type T . More... | |
bool | IsA (const std::type_info &t) const |
const std::type_info & | GetType () const |
Returns the type of the enum value, as an std::type_info . More... | |
const int & | GetValueAsInt () const |
Returns the integral value of the enum value. More... | |
template<typename T > | |
T | GetValue () const |
template<typename T , typename = typename std::enable_if< std::is_integral<T>::value || std::is_enum<T>::value>::type> | |
operator T () const | |
Conversion operator for enum and integral types only. More... | |
Static Public Member Functions | |
static TF_API void | _AddName (TfEnum val, const std::string &valName, const std::string &displayName="") |
static void | AddName (TfEnum val, const std::string &valName, const std::string &displayName="") |
template<typename T > | |
static TfEnum | IntegralEnum (T value) |
Retrieving Corresponding Names and Enumerated Values | |
The methods in this group can be used to retrieve corresponding names and values. The correspondences are set up with the | |
static TF_API std::string | GetName (TfEnum val) |
static TF_API std::string | GetFullName (TfEnum val) |
static TF_API std::string | GetDisplayName (TfEnum val) |
static std::vector< std::string > | GetAllNames (TfEnum val) |
static TF_API std::vector < std::string > | GetAllNames (const std::type_info &ti) |
template<class T > | |
static std::vector< std::string > | GetAllNames () |
static TF_API const std::type_info * | GetTypeFromName (const std::string &typeName) |
template<class T > | |
static T | GetValueFromName (const std::string &name, bool *foundIt=NULL) |
static TF_API TfEnum | GetValueFromName (const std::type_info &ti, const std::string &name, bool *foundIt=NULL) |
static TF_API TfEnum | GetValueFromFullName (const std::string &fullname, bool *foundIt=NULL) |
static TF_API bool | IsKnownEnumType (const std::string &typeName) |
Friends | |
template<class T > | |
std::enable_if_t< std::is_enum < T >::value, bool > | operator== (T val, TfEnum const &e) |
Compare a literal enum value val of enum type T with TfEnum e. More... | |
template<class T > | |
std::enable_if_t< std::is_enum < T >::value, bool > | operator!= (T val, TfEnum const &e) |
Compare a literal enum value val of enum type T with TfEnum e. More... | |
An enum class that records both enum type and enum value.
A TfEnum
can hold an enum variable of any enum type, while still being able to distinguish between various enum types. Here is an example:
Even though NEMO
and SULLEY
both are represented with integral value zero, t1
and t2
compare false. A TfEnum
can be passed by value, assigned, etc. just like a regular Enum
variable. A TfEnum
can also hold a plain integer, which will compare false against any other enum variable.
The TfEnum
class can also be used to represent enumerated values as strings. This can be useful for storing enum values in files for later retrieval.
Use the TF_ADD_ENUM_NAME()
macro to set up and enable strings for the values of an enum. Once this is done, several static TfEnum
methods may be used to look up names corresponding to enum values and vice-versa.
For example, see TfRegistryManager
to understand the use of the TF_REGISTRY_FUNCTION()
macro below:
|
inline |
|
inline |
|
inline |
|
static |
Associates a name with an enumerated value.
TF_ADD_ENUM_NAME()
macro, and should NOT be called directly. Instead, call AddName(), which does exactly the same thing.
|
inlinestatic |
Associates a name with an enumerated value.
|
inlinestatic |
Returns a vector of all the names associated with an enum type.
This returns a vector of all the names associated with the enum that contains the type val
. The names are not fully qualified. For example, TfEnum::GetAllNames(WINTER)
would return a vector containing "SPRING", "SUMMER", "AUTUMN", and "WINTER".
If there are no such names registered, an empty vector is returned.
|
static |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inlinestatic |
Returns a vector of all the names associated with an enum type.
This returns a vector of all the names associated with the enum type T
. The names are not fully qualified. For example, TfEnum::GetAllNames<Season>()
would return a vector containing "SPRING", "SUMMER", "AUTUMN", and "WINTER".
If there are no such names registered, an empty vector is returned.
|
static |
Returns the display name for an enumerated value.
This returns a user interface-suitable string for the given enumerated value.
|
static |
Returns the fully-qualified name for an enumerated value.
This returns a fully-qualified enumerated value name (e.g., "Season::WINTER"
) associated with the given value. If there is no such name registered, an empty string is returned.
|
static |
Returns the name associated with an enumerated value.
If there is no such name registered, an empty string is returned.
|
inline |
|
static |
Returns the typeid for a given enum type name.
This returns a pointer to the type_info associated with the enum that has the type name typeName
. If no such enum is registered, returns NULL.
|
inline |
Returns the enum value for the enum type T
.
If it is possible that the enum value is not of type T
, first use IsA()
to test whether the enum value is of type T
before calling GetValue<T>()
.
Note that if IsA<T>()
succeeds, then GetValue<T>()
will also succeed.
|
inline |
|
static |
Returns the enumerated value for a fully-qualified name.
This takes a fully-qualified enumerated value name (e.g., "Season::WINTER"
) and returns the associated value. If there is no such name, this returns -1. Since -1 can sometimes be a valid value, the foundIt
flag pointer, if not NULL
, is set to true
if the name was found and false
otherwise. Also, since this is not a templated function, it has to return a generic value type, so we use TfEnum
.
|
inlinestatic |
|
static |
Returns the enumerated value for a name.
This is a template-independent version of GetValueFromName()
.
|
inline |
|
inline |
|
static |
Returns true if typeName
is a known enum type.
If any enum whose demangled type name is typeName
has been added via TF_ADD_ENUM_NAME()
, this function returns true.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
friend |