Loading [MathJax]/extensions/tex2jax.js
https://mooseframework.inl.gov
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
MooseEnumBase.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 // C++ includes
13 #include <string>
14 #include <set>
15 #include <vector>
16 #include <map>
17 
18 // MOOSE includes
19 #include "MooseEnumItem.h"
20 
25 {
26 public:
34  MooseEnumBase(std::string names, bool allow_out_of_range = false);
35 
40  MooseEnumBase(const MooseEnumBase & other_enum);
41 
46  MooseEnumBase & operator=(const MooseEnumBase & other_enum) = default;
47 
51  virtual ~MooseEnumBase() = default;
52 
58  virtual void deprecate(const std::string & name, const std::string & raw_name = "");
59 
64  std::vector<std::string> getNames() const;
65 
70  std::string getRawNames() const;
71 
76  std::vector<int> getIDs() const;
77 
82  virtual bool isValid() const = 0;
83 
88  bool isOutOfRangeAllowed() const { return _allow_out_of_range; }
89 
93  const std::set<MooseEnumItem> & items() const { return _items; }
94 
98  void addDocumentation(const std::string & name, const std::string & doc);
99 
103  const std::map<MooseEnumItem, std::string> & getItemDocumentation() const;
104 
106 
109  std::set<MooseEnumItem>::const_iterator find(const MooseEnumItem & other) const;
110  std::set<MooseEnumItem>::const_iterator find(const std::string & name) const;
111  std::set<MooseEnumItem>::const_iterator find(int id) const;
113 
117  int getNextValidID() const;
118 
122  MooseEnumBase & operator+=(const std::string & name);
126  MooseEnumBase & operator+=(const std::initializer_list<std::string> & names);
127 
128 protected:
129  MooseEnumBase();
130 
132 
140  void addEnumerationNames(const std::string & names);
141  const MooseEnumItem & addEnumerationName(const std::string & raw_name);
142  const MooseEnumItem & addEnumerationName(const std::string & name, const int & value);
143  const MooseEnumItem & addEnumerationItem(const MooseEnumItem & item);
145 
149  virtual void checkDeprecated() const = 0;
150 
154  void checkDeprecated(const MooseEnumItem & item) const;
155 
157  std::set<MooseEnumItem> _items;
158 
160  std::map<MooseEnumItem, MooseEnumItem> _deprecated_items;
161 
164 
166  std::map<MooseEnumItem, std::string> _item_documentation;
167 };
std::string name(const ElemQuality q)
int getNextValidID() const
Compute the next valid ID.
const std::set< MooseEnumItem > & items() const
Return the complete set of available flags.
Definition: MooseEnumBase.h:93
std::map< MooseEnumItem, MooseEnumItem > _deprecated_items
The map of deprecated names and optional replacements.
void addEnumerationNames(const std::string &names)
Methods to add possible enumeration value to the enum.
Definition: MooseEnumBase.C:64
MooseEnumBase()
Private constuctor for use by libmesh::Parameters.
Definition: MooseEnumBase.C:42
std::string getRawNames() const
Method for returning the raw name strings for this instance.
virtual bool isValid() const =0
IsValid.
The base class for both the MooseEnum and MultiMooseEnum classes.
Definition: MooseEnumBase.h:24
const std::map< MooseEnumItem, std::string > & getItemDocumentation() const
Get the map containing each item&#39;s documentation string.
std::map< MooseEnumItem, std::string > _item_documentation
The map of items and their respective documentation strings.
virtual ~MooseEnumBase()=default
This class must have a virtual destructor since it has derived classes.
const MooseEnumItem & addEnumerationName(const std::string &raw_name)
Definition: MooseEnumBase.C:73
virtual void checkDeprecated() const =0
Method that must be implemented to check derived class values against the _deprecated_names.
const MooseEnumItem & addEnumerationItem(const MooseEnumItem &item)
std::vector< int > getIDs() const
Method for returning a vector of ids for this instance.
std::vector< std::string > getNames() const
Method for returning a vector of all valid enumeration names for this instance.
std::set< MooseEnumItem > _items
Storage for the assigned items.
MooseEnumBase & operator=(const MooseEnumBase &other_enum)=default
Copy Assignment operator must be explicitly defined when a copy ctor exists and this method is used...
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:18
void addDocumentation(const std::string &name, const std::string &doc)
Add an item documentation string.
bool isOutOfRangeAllowed() const
isOutOfRangeAllowed
Definition: MooseEnumBase.h:88
virtual void deprecate(const std::string &name, const std::string &raw_name="")
Deprecates various options in the MOOSE enum.
Definition: MooseEnumBase.C:45
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.
MooseEnumBase & operator+=(const std::string &name)
Adds an enumeration item from name.