summaryrefslogtreecommitdiff
path: root/impl/VariableAssignment.hpp
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@carlo-laptop>2012-04-26 22:32:35 +1000
committerCarlo Zancanaro <carlo@carlo-laptop>2012-04-26 22:32:35 +1000
commit76a4f0fcf3a9bf54ef910cdb2c0bebea37182391 (patch)
tree86ebaa6f86b53557d92e09ea1a74d2812da01df4 /impl/VariableAssignment.hpp
parent63a10756032fa5c677787fba209706b8bf1e4bef (diff)
A new attempt. Better strategies implementation.
Still lacking: - Factories (to set the ids) - Solver - Systems of equations
Diffstat (limited to 'impl/VariableAssignment.hpp')
-rw-r--r--impl/VariableAssignment.hpp30
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