23#include <initializer_list>
26#include <unordered_map>
37 NameOrder() =
default;
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;
143 auto begin()
const {
return this->name_list_.begin(); }
146 auto end()
const {
return this->name_list_.end(); }
153 template <
class Serializer>
156 serializer(this->name_list_);
157 serializer(this->max_groups_);
162 std::size_t max_groups_{};
165 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:143
static GroupOrder serializationTestObject()
Create a serialisation test object.
Definition NameOrder.cpp:107
bool anyGroupMatches(const std::string &pattern) const
Group name existence predicate.
Definition NameOrder.cpp:130
void add(const std::string &name)
Add a group name to ordered collection.
Definition NameOrder.cpp:117
bool has(const std::string &gname) const
Group name existence predicate.
Definition NameOrder.cpp:125
void serializeOp(Serializer &serializer)
Convert between byte array and object representation.
Definition NameOrder.hpp:154
auto end() const
End of group name sequence.
Definition NameOrder.hpp:146
bool operator==(const GroupOrder &other) const
Equality predicate.
Definition NameOrder.cpp:175
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:163
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