diff options
Diffstat (limited to 'impl/VariableAssignment.hpp')
-rw-r--r-- | impl/VariableAssignment.hpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/impl/VariableAssignment.hpp b/impl/VariableAssignment.hpp new file mode 100644 index 0000000..e41f3d8 --- /dev/null +++ b/impl/VariableAssignment.hpp @@ -0,0 +1,30 @@ +#ifndef VARIABLE_ASSIGNMENT_HPP +#define VARIABLE_ASSIGNMENT_HPP + +#include "Variable.hpp" + +template<typename T> +struct VariableAssignment { + VariableAssignment(unsigned int length) + : _length(length), _assignment(new T[length]) { } + ~VariableAssignment() { + delete[] _assignment; + } + const T& operator[] (const Variable<T> x) const { + if (x.id() < 0 || x.id() >= _length) { + throw "Array out of bounds"; + } + return _assignment[x.id()]; + } + T& operator[] (const Variable<T>& x) { + if (x.id() < 0 || x.id() >= _length) { + throw "Array out of bounds"; + } + return _assignment[x.id()]; + } + private: + unsigned int _length; + T* _assignment; +}; + +#endif |