45#define DEFINE_ENUM_VECTOR( enumName, ... ) \
46 enum enumName __VA_ARGS__; \
47 static constexpr enumName enumName##_vector[] = __VA_ARGS__;
49#define DECLARE_ENUM_VECTOR( className, enumName ) \
50 constexpr className::enumName className::enumName##_vector[];
67#define DEFINE_ENUM_CLASS_WITH_ITERATOR( enumName, beginVal, ... ) \
68 enum class enumName : int { beginVal, __VA_ARGS__, _ENUM_END }; \
69 typedef ENUM_ITERATOR<enumName, enumName::beginVal, enumName::_ENUM_END> enumName##_ITERATOR;
71template <
typename T, T beginVal, T endVal>
74 typedef typename std::underlying_type<T>::type
val_t;
ENUM_ITERATOR operator++()
std::underlying_type< T >::type val_t
std::ptrdiff_t difference_type
ENUM_ITERATOR(const T &f)
bool operator==(const ENUM_ITERATOR &aIt) const
bool operator!=(const ENUM_ITERATOR &aIt) const
std::input_iterator_tag iterator_category