9#include <initializer_list>
13#include "smats/symbolic/variable.h"
14#include "smats/util/concepts.h"
15#include "smats/util/hash.hpp"
29 using size_type = std::set<Variable>::size_type;
30 using iterator = std::set<Variable>::iterator;
31 using const_iterator = std::set<Variable>::const_iterator;
32 using reverse_iterator = std::set<Variable>::reverse_iterator;
33 using const_reverse_iterator = std::set<Variable>::const_reverse_iterator;
41 Variables(std::initializer_list<Variable> init);
44 [[nodiscard]] size_type
size()
const {
return vars_.size(); }
46 [[nodiscard]]
bool empty()
const {
return vars_.empty(); }
54 [[nodiscard]] const_iterator
begin()
const {
return vars_.cbegin(); }
56 [[nodiscard]] const_iterator
end()
const {
return vars_.cend(); }
58 [[nodiscard]] const_iterator
cbegin()
const {
return vars_.cbegin(); }
60 [[nodiscard]] const_iterator
cend()
const {
return vars_.cend(); }
66 [[nodiscard]] const_reverse_iterator
rbegin()
const {
return vars_.crbegin(); }
68 [[nodiscard]] const_reverse_iterator
rend()
const {
return vars_.crend(); }
70 [[nodiscard]] const_reverse_iterator
crbegin()
const {
return vars_.crbegin(); }
72 [[nodiscard]] const_reverse_iterator
crend()
const {
return vars_.crend(); }
84 template <
class InputIt>
85 void insert(InputIt first, InputIt last) {
86 vars_.insert(first, last);
134 bool operator==(
const Variables& vars)
const;
135 bool operator<(
const Variables& vars)
const;
161 explicit Variables(std::set<Variable> vars);
168std::ostream& operator<<(std::ostream&,
const Variables& vars);
Definition variables.h:27
const_iterator begin() const
Definition variables.h:54
iterator find(const Variable &key)
Definition variables.h:115
bool is_superset_of(const Variables &vars) const
Definition variables.cpp:27
const_reverse_iterator crend() const
Definition variables.h:72
void insert(InputIt first, InputIt last)
Definition variables.h:85
const_reverse_iterator rend() const
Definition variables.h:68
reverse_iterator rbegin()
Definition variables.h:62
bool is_strict_subset_of(const Variables &vars) const
Definition variables.cpp:29
void insert(const Variable &var)
Definition variables.h:78
Variables intersect(const Variables &vars) const
Definition variables.cpp:94
bool is_strict_superset_of(const Variables &vars) const
Definition variables.cpp:34
const_iterator find(const Variable &key) const
Definition variables.h:121
std::set< Variable > vars_
Set of variables.
Definition variables.h:163
const_reverse_iterator crbegin() const
Definition variables.h:70
reverse_iterator rend()
Definition variables.h:64
iterator end()
Definition variables.h:52
iterator begin()
Definition variables.h:50
const_iterator cbegin() const
Definition variables.h:58
const_reverse_iterator rbegin() const
Definition variables.h:66
bool empty() const
Definition variables.h:46
bool contains(const Variable &key) const
Definition variables.h:123
size_type erase(const Variable &key)
Definition variables.h:100
bool is_subset_of(const Variables &vars) const
Definition variables.cpp:23
const_iterator end() const
Definition variables.h:56
size_type size() const
Definition variables.h:44
void hash(InvocableHashAlgorithm auto &hasher) const noexcept
Definition variables.h:48
void insert(const Variables &vars)
Definition variables.h:92
const_iterator cend() const
Definition variables.h:60
void hash_append(HashAlgorithm &hasher, const T &hashable) noexcept
Definition hash.hpp:79