https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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{
26public:
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
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
128protected:
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};
The base class for both the MooseEnum and MultiMooseEnum classes.
const std::map< MooseEnumItem, std::string > & getItemDocumentation() const
Get the map containing each item's documentation string.
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.
std::set< MooseEnumItem > _items
Storage for the assigned items.
int getNextValidID() const
Compute the next valid ID.
const MooseEnumItem & addEnumerationName(const std::string &raw_name)
MooseEnumBase & operator=(const MooseEnumBase &other_enum)=default
Copy Assignment operator must be explicitly defined when a copy ctor exists and this method is used.
std::set< MooseEnumItem >::const_iterator find(const MooseEnumItem &other) const
Locate an item.
const MooseEnumItem & addEnumerationItem(const MooseEnumItem &item)
MooseEnumBase()
Private constuctor for use by libmesh::Parameters.
virtual ~MooseEnumBase()=default
This class must have a virtual destructor since it has derived classes.
virtual void checkDeprecated() const =0
Method that must be implemented to check derived class values against the _deprecated_names.
virtual void deprecate(const std::string &name, const std::string &raw_name="")
Deprecates various options in the MOOSE enum.
std::map< MooseEnumItem, MooseEnumItem > _deprecated_items
The map of deprecated names and optional replacements.
std::string getRawNames() const
Method for returning the raw name strings for this instance.
void addEnumerationNames(const std::string &names)
Methods to add possible enumeration value to the enum.
void addDocumentation(const std::string &name, const std::string &doc)
Add an item documentation string.
std::vector< std::string > getNames() const
Method for returning a vector of all valid enumeration names for this instance.
virtual bool isValid() const =0
IsValid.
const std::set< MooseEnumItem > & items() const
Return the complete set of available flags.
std::vector< int > getIDs() const
Method for returning a vector of ids for this instance.
bool isOutOfRangeAllowed() const
isOutOfRangeAllowed
std::map< MooseEnumItem, std::string > _item_documentation
The map of items and their respective documentation strings.
Class for containing MooseEnum item information.