19 #ifndef NAME_ORDER_HPP 20 #define NAME_ORDER_HPP 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;
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_{};
170 #endif // NAME_ORDER_HPP void serializeOp(Serializer &serializer)
Convert between byte array and object representation.
Definition: NameOrder.hpp:154
void add(const std::string &name)
Add a group name to ordered collection.
Definition: NameOrder.cpp:117
std::vector< std::optional< std::string > > restart_groups() const
Retrieve sequence of group names ordered appropriately for restart file output.
Definition: NameOrder.cpp:163
Definition: NameOrder.hpp:34
const std::vector< std::string > & names() const
Retrieve current list of group names.
Definition: NameOrder.hpp:94
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
bool operator==(const GroupOrder &other) const
Equality predicate.
Definition: NameOrder.cpp:175
static GroupOrder serializationTestObject()
Create a serialisation test object.
Definition: NameOrder.cpp:107
auto begin() const
Start of group name sequence.
Definition: NameOrder.hpp:143
auto end() const
End of group name sequence.
Definition: NameOrder.hpp:146
bool has(const std::string &gname) const
Group name existence predicate.
Definition: NameOrder.cpp:125
GroupOrder()=default
Default constructor.
bool anyGroupMatches(const std::string &pattern) const
Group name existence predicate.
Definition: NameOrder.cpp:130
Class for (de-)serializing.
Definition: Serializer.hpp:94
Collection of group names with built-in ordering.
Definition: NameOrder.hpp:68