Euphoria
eu::core::EnumType Struct Reference

Represents a dynamically loaded "enum type". More...

#include <enum.h>

Public Types

using ValueToNameMap = std::map< size_t, std::string >
 
using NameToValueMap = std::map< std::string, size_t >
 

Public Member Functions

 EnumType (std::string name)
 
 ~EnumType ()
 
 EnumType (const EnumType &)=delete
 
 EnumType (EnumType &&)=delete
 
void operator= (const EnumType &)=delete
 
void operator= (EnumType &&)=delete
 
EnumValue to_enum (const std::string &name)
 
void add_enums (const std::vector< std::string > &names)
 
void add_enum (const std::string &name)
 
std::string to_string (size_t v) const
 

Public Attributes

std::string type_name
 
ValueToNameMap value_to_name
 
NameToValueMap name_to_value
 
bool is_adding
 
size_t next_index
 

Detailed Description

Represents a dynamically loaded "enum type".

Declare globally grab specific enums before or after load, and load adds new, verifies created and asserts misspelled values. Advantages over hashes: type safety, catches bad spelling, no collisions and perhaps faster to generate?

Definition at line 27 of file enum.h.

Member Typedef Documentation

◆ NameToValueMap

using eu::core::EnumType::NameToValueMap = std::map<std::string, size_t>

Definition at line 30 of file enum.h.

◆ ValueToNameMap

using eu::core::EnumType::ValueToNameMap = std::map<size_t, std::string>

Definition at line 29 of file enum.h.

Constructor & Destructor Documentation

◆ EnumType() [1/3]

eu::core::EnumType::EnumType ( std::string  name)

Definition at line 26 of file enum.cc.

◆ ~EnumType()

eu::core::EnumType::~EnumType ( )

Definition at line 34 of file enum.cc.

◆ EnumType() [2/3]

eu::core::EnumType::EnumType ( const EnumType )
delete

◆ EnumType() [3/3]

eu::core::EnumType::EnumType ( EnumType &&  )
delete

Member Function Documentation

◆ add_enum()

void eu::core::EnumType::add_enum ( const std::string &  name)

Definition at line 112 of file enum.cc.

◆ add_enums()

void eu::core::EnumType::add_enums ( const std::vector< std::string > &  names)

Definition at line 81 of file enum.cc.

◆ operator=() [1/2]

void eu::core::EnumType::operator= ( const EnumType )
delete

◆ operator=() [2/2]

void eu::core::EnumType::operator= ( EnumType &&  )
delete

◆ to_enum()

EnumValue eu::core::EnumType::to_enum ( const std::string &  name)

Definition at line 61 of file enum.cc.

◆ to_string()

std::string eu::core::EnumType::to_string ( size_t  v) const

Definition at line 41 of file enum.cc.

Member Data Documentation

◆ is_adding

bool eu::core::EnumType::is_adding

Definition at line 35 of file enum.h.

◆ name_to_value

NameToValueMap eu::core::EnumType::name_to_value

Definition at line 34 of file enum.h.

◆ next_index

size_t eu::core::EnumType::next_index

Definition at line 36 of file enum.h.

◆ type_name

std::string eu::core::EnumType::type_name

Definition at line 32 of file enum.h.

◆ value_to_name

ValueToNameMap eu::core::EnumType::value_to_name

Definition at line 33 of file enum.h.


The documentation for this struct was generated from the following files: