23#include <initializer_list>
26#include <unordered_map>
38 explicit NameOrder(std::initializer_list<std::string> names);
39 explicit NameOrder(
const std::vector<std::string>& names);
41 void add(
const std::string& name);
42 std::vector<std::string> sort(std::vector<std::string> names)
const;
43 const std::vector<std::string>& names()
const;
44 bool has(
const std::string& wname)
const;
46 template <
class Serializer>
49 serializer(m_index_map);
50 serializer(m_name_list);
53 static NameOrder serializationTestObject();
55 const std::string& operator[](std::size_t index)
const;
56 bool operator==(
const NameOrder& other)
const;
58 auto begin()
const {
return this->m_name_list.begin(); }
59 auto end()
const {
return this->m_name_list.end(); }
60 auto size()
const {
return this->m_name_list.size(); }
63 std::unordered_map<std::string, std::size_t> m_index_map;
64 std::vector<std::string> m_name_list;
88 void add(
const std::string& name);
94 const std::vector<std::string>&
names()
const
96 return this->name_list_;
106 std::vector<std::string>
names(
const std::string& pattern)
const;
113 bool has(
const std::string& gname)
const;
133 auto begin()
const {
return this->name_list_.begin(); }
136 auto end()
const {
return this->name_list_.end(); }
143 template <
class Serializer>
146 serializer(this->name_list_);
147 serializer(this->max_groups_);
152 std::size_t max_groups_{};
155 std::vector<std::string> name_list_{};
Collection of group names with built-in ordering.
Definition NameOrder.hpp:69
GroupOrder()=default
Default constructor.
auto begin() const
Start of group name sequence.
Definition NameOrder.hpp:133
static GroupOrder serializationTestObject()
Create a serialisation test object.
Definition NameOrder.cpp:109
void add(const std::string &name)
Add a group name to ordered collection.
Definition NameOrder.cpp:119
bool has(const std::string &gname) const
Group name existence predicate.
Definition NameOrder.cpp:128
void serializeOp(Serializer &serializer)
Convert between byte array and object representation.
Definition NameOrder.hpp:144
auto end() const
End of group name sequence.
Definition NameOrder.hpp:136
bool operator==(const GroupOrder &other) const
Equality predicate.
Definition NameOrder.cpp:174
const std::vector< std::string > & names() const
Retrieve current list of group names.
Definition NameOrder.hpp:94
std::vector< std::optional< std::string > > restart_groups() const
Retrieve sequence of group names ordered appropriately for restart file output.
Definition NameOrder.cpp:162
Definition NameOrder.hpp:35
Class for (de-)serializing.
Definition Serializer.hpp:94
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30