#ifndef MAX_EXPRESSION_HPP #define MAX_EXPRESSION_HPP #include "Expression.hpp" #include "EquationSystem.hpp" #include "IdSet.hpp" template struct MaxStrategy { virtual ~MaxStrategy() { } virtual unsigned int get(const MaxExpression& e) const = 0; }; template struct ConcreteMaxStrategy : public MaxStrategy { ConcreteMaxStrategy(const EquationSystem& system) : _strategy(system.maxExpressionCount(), 0) { } unsigned int get(const MaxExpression& e) const { return _strategy[e]; } unsigned int set(const MaxExpression& e, unsigned int i) { _strategy[e] = i; return i; } void print(std::ostream& cout) const { cout << _strategy << std::endl; } private: IdMap,unsigned int> _strategy; }; #endif