www.mooseframework.org
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
MooseEnum Class Reference

This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It should be initialized with a space-delimited list of strings which become the enum values. More...

#include <MooseEnum.h>

Inheritance diagram for MooseEnum:
[legend]

Public Types

enum  CompareMode { CompareMode::COMPARE_NAME, CompareMode::COMPARE_ID, CompareMode::COMPARE_BOTH }
 Enum item for controlling comparison in the compareCurrent method. More...
 

Public Member Functions

 MooseEnum (std::string names, std::string default_name="", bool allow_out_of_range=false)
 Constructor that takes a list of enumeration values, and a separate string to set a default for this instance. More...
 
 MooseEnum (const MooseEnum &other_enum)
 Copy Constructor for use when creating vectors of MooseEnums. More...
 
virtual ~MooseEnum ()=default
 
 operator int () const
 Cast operators to make this object behave as value_types and std::string these methods can be used so that this class behaves more like a normal value_type enumeration. More...
 
 operator std::string () const
 
bool operator== (const char *value) const
 Comparison operators for comparing with character constants, MooseEnums or integer values. More...
 
bool operator!= (const char *value) const
 
bool operator== (int value) const
 
bool operator!= (int value) const
 
bool operator== (unsigned short value) const
 
bool operator!= (unsigned short value) const
 
bool operator== (const MooseEnum &value) const
 
bool operator!= (const MooseEnum &value) const
 
bool compareCurrent (const MooseEnum &other, CompareMode mode=CompareMode::COMPARE_NAME) const
 Method for comparing currently set values between MooseEnum. More...
 
virtual bool isValid () const override
 IsValid. More...
 
template<typename T >
getEnum () const
 get the current value cast to the enum type T More...
 
virtual void deprecate (const std::string &name, const std::string &raw_name="")
 Deprecates various options in the MOOSE enum. More...
 
std::vector< std::string > getNames () const
 Method for returning a vector of all valid enumeration names for this instance. More...
 
std::string getRawNames () const
 Method for returning the raw name strings for this instance. More...
 
std::vector< int > getIDs () const
 Method for returning a vector of ids for this instance. More...
 
bool isOutOfRangeAllowed () const
 isOutOfRangeAllowed More...
 
const std::set< MooseEnumItem > & items ()
 Return the complete set of available flags. More...
 
int getNextValidID () const
 Compute the next valid ID. More...
 
MooseEnumoperator= (const std::string &name)
 Assignment operators. More...
 
MooseEnumoperator= (int value)
 
std::set< MooseEnumItem >::const_iterator find (const MooseEnumItem &other) const
 Locate an item. More...
 
std::set< MooseEnumItem >::const_iterator find (const std::string &name) const
 
std::set< MooseEnumItem >::const_iterator find (int id) const
 

Protected Member Functions

virtual void checkDeprecated () const override
 Check whether the current value is deprecated when called. More...
 
void checkDeprecated (const MooseEnumItem &item) const
 Check and warn deprecated values. More...
 
void addEnumerationNames (const std::string &names)
 Methods to add possible enumeration value to the enum. More...
 
void addEnumerationName (const std::string &raw_name)
 
void addEnumerationName (const std::string &name, const int &value)
 
void addEnumerationItem (const MooseEnumItem &item)
 

Protected Attributes

std::set< MooseEnumItem_items
 Storage for the assigned items. More...
 
std::map< MooseEnumItem, MooseEnumItem_deprecated_items
 The map of deprecated names and optional replacements. More...
 
bool _allow_out_of_range
 Flag to enable enumeration items not previously defined. More...
 

Private Member Functions

 MooseEnum ()
 Private constructor for use by libmesh::Parameters. More...
 

Private Attributes

MooseEnumItem _current
 The current id. More...
 

Friends

class libMesh::Parameters
 
std::ostream & operator<< (std::ostream &out, const MooseEnum &obj)
 Operator for printing to iostreams. More...
 

Detailed Description

This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It should be initialized with a space-delimited list of strings which become the enum values.

You may also optionally supply numeric ints for one or more values similar to a C++ enum. This is done with the "=" sign (no spaces). It can be used any place where an integer (switch statements), const char* or std::string is expected. In addition the InputParameters system has full support for this Enum type

Definition at line 32 of file MooseEnum.h.

Member Enumeration Documentation

◆ CompareMode

Enum item for controlling comparison in the compareCurrent method.

Enumerator
COMPARE_NAME 
COMPARE_ID 
COMPARE_BOTH 

Definition at line 38 of file MooseEnum.h.

39  {
40  COMPARE_NAME,
41  COMPARE_ID,
42  COMPARE_BOTH
43  };

Constructor & Destructor Documentation

◆ MooseEnum() [1/3]

MooseEnum::MooseEnum ( std::string  names,
std::string  default_name = "",
bool  allow_out_of_range = false 
)

Constructor that takes a list of enumeration values, and a separate string to set a default for this instance.

Parameters
names- a list of names for this enumeration
default_name- the default value for this enumeration instance
allow_out_of_range- determines whether this enumeration will accept values outside of it's range of defined values.

Definition at line 22 of file MooseEnum.C.

23  : MooseEnumBase(names, allow_out_of_range), _current("", MooseEnumItem::INVALID_ID)
24 {
25  *this = default_name;
26 }
static const int INVALID_ID
Definition: MooseEnumItem.h:25
MooseEnumBase()
Private constuctor for use by libmesh::Parameters.
Definition: MooseEnumBase.C:42
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

◆ MooseEnum() [2/3]

MooseEnum::MooseEnum ( const MooseEnum other_enum)

Copy Constructor for use when creating vectors of MooseEnums.

Parameters
other_enum- The other enumeration to copy state from

Definition at line 28 of file MooseEnum.C.

29  : MooseEnumBase(other_enum), _current(other_enum._current)
30 {
31 }
MooseEnumBase()
Private constuctor for use by libmesh::Parameters.
Definition: MooseEnumBase.C:42
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

◆ ~MooseEnum()

virtual MooseEnum::~MooseEnum ( )
virtualdefault

◆ MooseEnum() [3/3]

MooseEnum::MooseEnum ( )
private

Private constructor for use by libmesh::Parameters.

Private constuctor for use by libmesh::Parameters.

Definition at line 36 of file MooseEnum.C.

static const int INVALID_ID
Definition: MooseEnumItem.h:25
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

Member Function Documentation

◆ addEnumerationItem()

void MooseEnumBase::addEnumerationItem ( const MooseEnumItem item)
protectedinherited

Definition at line 117 of file MooseEnumBase.C.

Referenced by ExecFlagEnum::addAvailableFlags(), MooseEnumBase::addEnumerationName(), and MultiMooseEnum::assign().

118 {
119  if (_items.count(item) > 0) // do nothing for identical insertions
120  return;
121 
122  if (find(item.id()) != _items.end())
123  mooseError("The supplied id ",
124  item.id(),
125  " already exists in the enumeration, cannot not add '",
126  item,
127  "'.");
128  if (find(item.name()) != _items.end())
129  mooseError("The name '", item.name(), "' already exists in the enumeration.");
130 
131  _items.insert(item);
132 }
const std::string & name() const
Definition: MooseEnumItem.h:38
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
std::set< MooseEnumItem > _items
Storage for the assigned items.
const int & id() const
Return the numeric, name, or raw name.
Definition: MooseEnumItem.h:37
std::set< MooseEnumItem >::const_iterator find(const MooseEnumItem &other) const
Locate an item.

◆ addEnumerationName() [1/2]

void MooseEnumBase::addEnumerationName ( const std::string &  raw_name)
protectedinherited

Definition at line 73 of file MooseEnumBase.C.

Referenced by MooseEnumBase::addEnumerationNames().

74 {
75  // Make sure the option is not malformed
76  if (raw_name.find_first_of('=') == 0 || raw_name.find_last_of('=') == raw_name.length() - 1)
77  mooseError("You cannot place whitespace around the '=' character in MooseEnumBase");
78 
79  // Split on equals sign
80  std::vector<std::string> name_value;
81  MooseUtils::tokenize(MooseUtils::trim(raw_name), name_value, 1, "=");
82 
83  // There should be one or two items in the name_value
84  if (name_value.size() < 1 || name_value.size() > 2)
85  mooseError("Invalid option supplied in MooseEnumBase: ", raw_name);
86 
87  // Remove un-wanted space around string
88  name_value[0] = MooseUtils::trim(name_value[0]);
89 
90  // See if there is a value supplied for this option
91  // strtol allows for proper conversions of both int and hex strings
92  int value;
93  if (name_value.size() == 2)
94  value = std::strtol(name_value[1].c_str(), NULL, 0);
95  else
96  value = getNextValidID();
97 
98  addEnumerationName(name_value[0], value);
99 }
int getNextValidID() const
Compute the next valid ID.
void tokenize(const std::string &str, std::vector< T > &elements, unsigned int min_len=1, const std::string &delims="/")
This function will split the passed in string on a set of delimiters appending the substrings to the ...
Definition: MooseUtils.h:377
void addEnumerationName(const std::string &raw_name)
Definition: MooseEnumBase.C:73
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
std::string trim(const std::string &str, const std::string &white_space=" \\\)
Standard scripting language trim function.
Definition: MooseUtils.C:112

◆ addEnumerationName() [2/2]

void MooseEnumBase::addEnumerationName ( const std::string &  name,
const int &  value 
)
protectedinherited

Definition at line 111 of file MooseEnumBase.C.

112 {
113  addEnumerationItem(MooseEnumItem(name, value));
114 }
void addEnumerationItem(const MooseEnumItem &item)
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:22

◆ addEnumerationNames()

void MooseEnumBase::addEnumerationNames ( const std::string &  names)
protectedinherited

Methods to add possible enumeration value to the enum.

The MooseEnum/MultiMooseEnum are not designed to be modified, with respect to the list of possible values. However, this is not the case for the ExecFlagEnum which is a special type of MultiMooseEnum for managing the "execute_on" flags. These methods are used by ExecFlagEnum to allow users to modify the available execute flags for their object.

Definition at line 64 of file MooseEnumBase.C.

Referenced by MooseEnumBase::MooseEnumBase().

65 {
66  std::vector<std::string> elements;
67  MooseUtils::tokenize(names, elements, 1, " ");
68  for (const std::string & raw_name : elements)
69  addEnumerationName(raw_name);
70 }
void tokenize(const std::string &str, std::vector< T > &elements, unsigned int min_len=1, const std::string &delims="/")
This function will split the passed in string on a set of delimiters appending the substrings to the ...
Definition: MooseUtils.h:377
void addEnumerationName(const std::string &raw_name)
Definition: MooseEnumBase.C:73

◆ checkDeprecated() [1/2]

void MooseEnum::checkDeprecated ( ) const
overrideprotectedvirtual

Check whether the current value is deprecated when called.

Implements MooseEnumBase.

Definition at line 169 of file MooseEnum.C.

Referenced by operator=().

170 {
172 }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
virtual void checkDeprecated() const =0
Method that must be implemented to check derived class values against the _deprecated_names.

◆ checkDeprecated() [2/2]

void MooseEnumBase::checkDeprecated ( const MooseEnumItem item) const
protectedinherited

Check and warn deprecated values.

Definition at line 135 of file MooseEnumBase.C.

136 {
137  std::map<MooseEnumItem, MooseEnumItem>::const_iterator it = _deprecated_items.find(item);
138  if (it != _deprecated_items.end())
139  {
140  if (it->second.name().empty())
141  mooseWarning(item.name() + " is deprecated");
142  else
143  mooseWarning(item.name() + " is deprecated, consider using " + it->second.name());
144  }
145 }
const std::string & name() const
Definition: MooseEnumItem.h:38
std::map< MooseEnumItem, MooseEnumItem > _deprecated_items
The map of deprecated names and optional replacements.
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition: MooseError.h:220

◆ compareCurrent()

bool MooseEnum::compareCurrent ( const MooseEnum other,
CompareMode  mode = CompareMode::COMPARE_NAME 
) const

Method for comparing currently set values between MooseEnum.

Definition at line 138 of file MooseEnum.C.

139 {
140  switch (mode)
141  {
143  return (_current.id() == other._current.id()) && (_current.name() == other._current.name());
145  return _current.name() == other._current.name();
147  return _current.id() == other._current.id();
148  }
149  return false;
150 }
const std::string & name() const
Definition: MooseEnumItem.h:38
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
const int & id() const
Return the numeric, name, or raw name.
Definition: MooseEnumItem.h:37

◆ deprecate()

void MooseEnumBase::deprecate ( const std::string &  name,
const std::string &  raw_name = "" 
)
virtualinherited

Deprecates various options in the MOOSE enum.

For each deprecated option, you may supply an optional new option that will be used in a message telling the user which new option replaces the old one.

Definition at line 45 of file MooseEnumBase.C.

46 {
47  std::set<MooseEnumItem>::const_iterator deprecated = find(name);
48  if (deprecated == _items.end())
49  mooseError("Cannot deprecate the enum item ", name, ", is not an available value.");
50 
51  std::set<MooseEnumItem>::const_iterator replaced = find(raw_name);
52  if (replaced == _items.end())
53  mooseError("Cannot deprecate the enum item ",
54  name,
55  ", since the replaced item ",
56  raw_name,
57  " it is not an available value.");
58 
59  _deprecated_items.emplace(std::make_pair(*deprecated, *replaced));
61 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
std::map< MooseEnumItem, MooseEnumItem > _deprecated_items
The map of deprecated names and optional replacements.
virtual void checkDeprecated() const =0
Method that must be implemented to check derived class values against the _deprecated_names.
std::set< MooseEnumItem > _items
Storage for the assigned items.
std::set< MooseEnumItem >::const_iterator find(const MooseEnumItem &other) const
Locate an item.

◆ find() [1/3]

std::set< MooseEnumItem >::const_iterator MooseEnumBase::find ( const MooseEnumItem other) const
inherited

Locate an item.

Definition at line 190 of file MooseEnumBase.C.

Referenced by MooseEnumBase::addEnumerationItem(), MooseApp::addExecFlag(), ExecFlagEnum::appendCurrent(), MultiMooseEnum::assign(), MooseEnumBase::deprecate(), operator=(), operator==(), and ExecFlagEnum::removeAvailableFlags().

191 {
192  return std::find_if(_items.begin(), _items.end(), [&other](MooseEnumItem const & item) {
193  return item.id() == other.id();
194  });
195 }
std::set< MooseEnumItem > _items
Storage for the assigned items.
const int & id() const
Return the numeric, name, or raw name.
Definition: MooseEnumItem.h:37
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:22

◆ find() [2/3]

std::set< MooseEnumItem >::const_iterator MooseEnumBase::find ( const std::string &  name) const
inherited

Definition at line 174 of file MooseEnumBase.C.

175 {
176  std::string upper = MooseUtils::toUpper(name);
177  return std::find_if(_items.begin(), _items.end(), [&upper](MooseEnumItem const & item) {
178  return item.name() == upper;
179  });
180 }
std::string toUpper(const std::string &name)
Convert supplied string to upper case.
Definition: MooseUtils.C:708
std::set< MooseEnumItem > _items
Storage for the assigned items.
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:22

◆ find() [3/3]

std::set< MooseEnumItem >::const_iterator MooseEnumBase::find ( int  id) const
inherited

Definition at line 183 of file MooseEnumBase.C.

184 {
185  return std::find_if(
186  _items.begin(), _items.end(), [&id](MooseEnumItem const & item) { return item.id() == id; });
187 }
std::set< MooseEnumItem > _items
Storage for the assigned items.
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:22

◆ getEnum()

template<typename T >
T MooseEnum::getEnum ( ) const

get the current value cast to the enum type T

Definition at line 140 of file MooseEnum.h.

141 {
142 #ifdef LIBMESH_HAVE_CXX11_TYPE_TRAITS
143  static_assert(std::is_enum<T>::value == true,
144  "The type requested from MooseEnum::getEnum must be an enum type!\n\n");
145 #endif
146  return static_cast<T>(_current.id());
147 }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
const int & id() const
Return the numeric, name, or raw name.
Definition: MooseEnumItem.h:37

◆ getIDs()

std::vector< int > MooseEnumBase::getIDs ( ) const
inherited

Method for returning a vector of ids for this instance.

Returns
a vector of ints containing the possible ids for this enumeration

Definition at line 164 of file MooseEnumBase.C.

Referenced by operator=().

165 {
166  std::vector<int> out;
167  out.reserve(_items.size());
168  for (const auto & item : _items)
169  out.push_back(item.id());
170  return out;
171 }
std::set< MooseEnumItem > _items
Storage for the assigned items.

◆ getNames()

std::vector< std::string > MooseEnumBase::getNames ( ) const
inherited

Method for returning a vector of all valid enumeration names for this instance.

Returns
a vector of names

Definition at line 148 of file MooseEnumBase.C.

Referenced by ExecFlagEnum::getDocString().

149 {
150  std::vector<std::string> out;
151  out.reserve(_items.size());
152  for (const auto & item : _items)
153  out.push_back(item.name());
154  return out;
155 }
std::set< MooseEnumItem > _items
Storage for the assigned items.

◆ getNextValidID()

int MooseEnumBase::getNextValidID ( ) const
inherited

Compute the next valid ID.

Definition at line 102 of file MooseEnumBase.C.

Referenced by MooseEnumBase::addEnumerationName(), MooseApp::addExecFlag(), MultiMooseEnum::assign(), and operator=().

103 {
104  int value = -1; // Use -1 so if no values exist the first will be zero
105  for (const auto & item : _items)
106  value = std::max(value, item.id());
107  return ++value;
108 }
std::set< MooseEnumItem > _items
Storage for the assigned items.

◆ getRawNames()

std::string MooseEnumBase::getRawNames ( ) const
inherited

Method for returning the raw name strings for this instance.

Returns
a space separated list of names

Definition at line 158 of file MooseEnumBase.C.

Referenced by MultiMooseEnum::assign(), AdvancedOutput::enableOutputTypes(), operator=(), operator==(), validParams< ComparisonPostprocessor >(), validParams< LeastSquaresFit >(), validParams< PiecewiseConstant >(), and validParams< Residual >().

159 {
160  return Moose::stringify(_items, " ");
161 }
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:58
std::set< MooseEnumItem > _items
Storage for the assigned items.

◆ isOutOfRangeAllowed()

bool MooseEnumBase::isOutOfRangeAllowed ( ) const
inlineinherited

isOutOfRangeAllowed

Returns
- a Boolean indicating whether enum names out of range are allowed

Definition at line 83 of file MooseEnumBase.h.

83 { return _allow_out_of_range; }
bool _allow_out_of_range
Flag to enable enumeration items not previously defined.

◆ isValid()

virtual bool MooseEnum::isValid ( ) const
inlineoverridevirtual

IsValid.

Returns
- a Boolean indicating whether this Enumeration has been set

Implements MooseEnumBase.

Definition at line 107 of file MooseEnum.h.

Referenced by MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer().

107 { return _current.id() > MooseEnumItem::INVALID_ID; }
static const int INVALID_ID
Definition: MooseEnumItem.h:25
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
const int & id() const
Return the numeric, name, or raw name.
Definition: MooseEnumItem.h:37

◆ items()

const std::set<MooseEnumItem>& MooseEnumBase::items ( )
inlineinherited

Return the complete set of available flags.

Definition at line 88 of file MooseEnumBase.h.

88 { return _items; }
std::set< MooseEnumItem > _items
Storage for the assigned items.

◆ operator int()

MooseEnum::operator int ( ) const
inline

Cast operators to make this object behave as value_types and std::string these methods can be used so that this class behaves more like a normal value_type enumeration.

Definition at line 67 of file MooseEnum.h.

67 { return _current.id(); }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
const int & id() const
Return the numeric, name, or raw name.
Definition: MooseEnumItem.h:37

◆ operator std::string()

MooseEnum::operator std::string ( ) const
inline

Definition at line 68 of file MooseEnum.h.

68 { return _current.rawName(); }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
const std::string & rawName() const
Definition: MooseEnumItem.h:39

◆ operator!=() [1/4]

bool MooseEnum::operator!= ( const char *  value) const

Definition at line 108 of file MooseEnum.C.

109 {
110  return !(*this == name);
111 }

◆ operator!=() [2/4]

bool MooseEnum::operator!= ( int  value) const

Definition at line 120 of file MooseEnum.C.

121 {
122  return value != _current;
123 }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

◆ operator!=() [3/4]

bool MooseEnum::operator!= ( unsigned short  value) const

Definition at line 132 of file MooseEnum.C.

133 {
134  return value != _current;
135 }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

◆ operator!=() [4/4]

bool MooseEnum::operator!= ( const MooseEnum value) const

Definition at line 161 of file MooseEnum.C.

162 {
163  mooseDeprecated("This method will be removed because the meaning is not well defined, please use "
164  "the 'compareCurrent' method instead.");
165  return value._current.name() != _current.name();
166 }
const std::string & name() const
Definition: MooseEnumItem.h:38
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition: MooseError.h:237

◆ operator=() [1/2]

MooseEnum & MooseEnum::operator= ( const std::string &  name)

Assignment operators.

Parameters
name/int- a string or int representing one of the enumeration values.
Returns
A reference to this object for chaining

Definition at line 39 of file MooseEnum.C.

40 {
41  if (name == "")
42  {
44  return *this;
45  }
46 
47  std::set<MooseEnumItem>::const_iterator iter = find(name);
48  if (iter == _items.end())
49  {
50  if (!_allow_out_of_range) // Are out of range values allowed?
51  mooseError("Invalid option \"",
52  name,
53  "\" in MooseEnum. Valid options (not case-sensitive) are \"",
54  getRawNames(),
55  "\".");
56  else
57  {
59  _items.insert(_current);
60  }
61  }
62  else
63  _current = *iter;
64 
66 
67  return *this;
68 }
int getNextValidID() const
Compute the next valid ID.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
static const int INVALID_ID
Definition: MooseEnumItem.h:25
virtual void checkDeprecated() const override
Check whether the current value is deprecated when called.
Definition: MooseEnum.C:169
std::string getRawNames() const
Method for returning the raw name strings for this instance.
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
std::set< MooseEnumItem > _items
Storage for the assigned items.
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:22
std::set< MooseEnumItem >::const_iterator find(const MooseEnumItem &other) const
Locate an item.
bool _allow_out_of_range
Flag to enable enumeration items not previously defined.

◆ operator=() [2/2]

MooseEnum & MooseEnum::operator= ( int  value)

Definition at line 71 of file MooseEnum.C.

72 {
73  if (value == MooseEnumItem::INVALID_ID)
74  {
76  return *this;
77  }
78 
79  std::set<MooseEnumItem>::const_iterator iter = find(value);
80  if (iter == _items.end())
81  mooseError("Invalid id \"",
82  value,
83  "\" in MooseEnum. Valid ids are \"",
85  "\".");
86  else
87  _current = *iter;
88 
90 
91  return *this;
92 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
static const int INVALID_ID
Definition: MooseEnumItem.h:25
virtual void checkDeprecated() const override
Check whether the current value is deprecated when called.
Definition: MooseEnum.C:169
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
std::vector< int > getIDs() const
Method for returning a vector of ids for this instance.
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:58
std::set< MooseEnumItem > _items
Storage for the assigned items.
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:22
std::set< MooseEnumItem >::const_iterator find(const MooseEnumItem &other) const
Locate an item.

◆ operator==() [1/4]

bool MooseEnum::operator== ( const char *  value) const

Comparison operators for comparing with character constants, MooseEnums or integer values.

Parameters
value- RHS value to compare against
Returns
bool - the truth value for the comparison

Definition at line 95 of file MooseEnum.C.

96 {
97  std::string upper(MooseUtils::toUpper(name));
98 
99  mooseAssert(_allow_out_of_range || find(upper) != _items.end(),
100  "Invalid string comparison \"" + upper +
101  "\" in MooseEnum. Valid options (not case-sensitive) are \"" + getRawNames() +
102  "\".");
103 
104  return _current == upper;
105 }
std::string toUpper(const std::string &name)
Convert supplied string to upper case.
Definition: MooseUtils.C:708
std::string getRawNames() const
Method for returning the raw name strings for this instance.
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
std::set< MooseEnumItem > _items
Storage for the assigned items.
std::set< MooseEnumItem >::const_iterator find(const MooseEnumItem &other) const
Locate an item.
bool _allow_out_of_range
Flag to enable enumeration items not previously defined.

◆ operator==() [2/4]

bool MooseEnum::operator== ( int  value) const

Definition at line 114 of file MooseEnum.C.

115 {
116  return value == _current;
117 }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

◆ operator==() [3/4]

bool MooseEnum::operator== ( unsigned short  value) const

Definition at line 126 of file MooseEnum.C.

127 {
128  return value == _current;
129 }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135

◆ operator==() [4/4]

bool MooseEnum::operator== ( const MooseEnum value) const

Definition at line 153 of file MooseEnum.C.

154 {
155  mooseDeprecated("This method will be removed because the meaning is not well defined, please use "
156  "the 'compareCurrent' method instead.");
157  return value._current.name() == _current.name();
158 }
const std::string & name() const
Definition: MooseEnumItem.h:38
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition: MooseError.h:237

Friends And Related Function Documentation

◆ libMesh::Parameters

friend class libMesh::Parameters
friend

Definition at line 111 of file MooseEnum.h.

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const MooseEnum obj 
)
friend

Operator for printing to iostreams.

Definition at line 114 of file MooseEnum.h.

115  {
116  out << obj._current.rawName();
117  return out;
118  }
MooseEnumItem _current
The current id.
Definition: MooseEnum.h:135
const std::string & rawName() const
Definition: MooseEnumItem.h:39

Member Data Documentation

◆ _allow_out_of_range

bool MooseEnumBase::_allow_out_of_range
protectedinherited

Flag to enable enumeration items not previously defined.

Definition at line 139 of file MooseEnumBase.h.

Referenced by MultiMooseEnum::assign(), MooseEnumBase::isOutOfRangeAllowed(), operator=(), and operator==().

◆ _current

MooseEnumItem MooseEnum::_current
private

◆ _deprecated_items

std::map<MooseEnumItem, MooseEnumItem> MooseEnumBase::_deprecated_items
protectedinherited

The map of deprecated names and optional replacements.

Definition at line 136 of file MooseEnumBase.h.

Referenced by MooseEnumBase::checkDeprecated(), and MooseEnumBase::deprecate().

◆ _items

std::set<MooseEnumItem> MooseEnumBase::_items
protectedinherited

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