KiCad PCB EDA Suite
Loading...
Searching...
No Matches
enum_vector.h File Reference
#include <iterator>
#include <type_traits>

Go to the source code of this file.

Classes

class  ENUM_ITERATOR< T, beginVal, endVal >
 

Macros

#define DEFINE_ENUM_VECTOR(enumName, ...)
 Macro to create const vectors containing enum values to enable easy iteration.
 
#define DECLARE_ENUM_VECTOR(className, enumName)
 
#define DEFINE_ENUM_CLASS_WITH_ITERATOR(enumName, beginVal, ...)
 Macro to create const vectors containing enum class values to enable easy iteration.
 

Macro Definition Documentation

◆ DECLARE_ENUM_VECTOR

#define DECLARE_ENUM_VECTOR ( className,
enumName )
Value:
constexpr className::enumName className::enumName##_vector[];

Definition at line 51 of file enum_vector.h.

◆ DEFINE_ENUM_CLASS_WITH_ITERATOR

#define DEFINE_ENUM_CLASS_WITH_ITERATOR ( enumName,
beginVal,
... )
Value:
enum class enumName : int { beginVal, __VA_ARGS__, _ENUM_END }; \

Macro to create const vectors containing enum class values to enable easy iteration.

Usage: [header] A { DEFINE_ENUM_CLASS_WITH_ITERATOR( COLOR, RED, GREEN, BLUE ) };

[source] for( COLOR color : COLOR_ITERATOR() ) { // do sth with color }

Definition at line 69 of file enum_vector.h.

◆ DEFINE_ENUM_VECTOR

#define DEFINE_ENUM_VECTOR ( enumName,
... )
Value:
enum enumName __VA_ARGS__; \
static constexpr enumName enumName##_vector[] = __VA_ARGS__;

Macro to create const vectors containing enum values to enable easy iteration.

Warning
Do not use in new code. Use the DEFINE_ENUM_CLASS_WITH_ITERATOR and #DECLARE_ENUM_CLASS_ITERATOR macros instead (unless they don't work ;) ).

Usage: [header] A { DEFINE_ENUM_VECTOR( COLOR, { RED, GREEN, BLUE } ) };

[source] for( COLOR color : COLOR_vector ) { // do sth with color }

DECLARE_ENUM_VECTOR( COLORS );

Definition at line 47 of file enum_vector.h.