13#include <initializer_list>
16#include <unordered_map>
18#include "smats/symbolic/variable.h"
19#include "smats/symbolic/variables.h"
48 using mapped_type = T;
49 using map = std::unordered_map<key_type, T>;
50 using value_type = map::value_type;
51 using iterator = map::iterator;
52 using const_iterator = map::const_iterator;
62 explicit Environment(std::initializer_list<value_type> init);
69 explicit Environment(std::span<const value_type> init);
78 explicit Environment(std::initializer_list<key_type> vars);
87 explicit Environment(std::span<const key_type> vars);
101 [[nodiscard]] const_iterator
begin()
const {
return map_.cbegin(); }
103 [[nodiscard]] const_iterator
end()
const {
return map_.cend(); }
105 [[nodiscard]] const_iterator
cbegin()
const {
return map_.cbegin(); }
107 [[nodiscard]] const_iterator
cend()
const {
return map_.cend(); }
118 void insert(
const key_type& key,
const T& elem);
127 [[nodiscard]]
bool empty()
const {
return map_.empty(); }
129 [[nodiscard]] std::size_t
size()
const {
return map_.size(); }
158 [[nodiscard]]
const T&
at(
const key_type& key)
const;
173 const T&
operator[](
const key_type& key)
const;
182std::ostream& operator<<(std::ostream& os,
const Environment<T>& env);
Definition environment.h:45
const T & at(const key_type &key) const
Definition environment.cpp:70
const_iterator cbegin() const
Definition environment.h:105
const_iterator find(const key_type &key) const
Definition environment.h:150
const_iterator cend() const
Definition environment.h:107
iterator find(const key_type &key)
Definition environment.h:144
T & operator[](const key_type &key)
Definition environment.cpp:75
Variables domain() const
Definition environment.cpp:63
void insert(const key_type &key, const T &elem)
Definition environment.cpp:51
bool contains(const key_type &key) const
Definition environment.h:138
bool empty() const
Definition environment.h:127
std::size_t size() const
Definition environment.h:129
map map_
map between variables and values
Definition environment.h:178
iterator end()
Definition environment.h:99
const_iterator end() const
Definition environment.h:103
void insert_or_assign(const key_type &key, const T &elem)
Definition environment.cpp:57
iterator begin()
Definition environment.h:97
const_iterator begin() const
Definition environment.h:101
Definition variables.h:27