#ifndef MDD_MODULEMATH_H #define MDD_MODULEMATH_H #include "ModuleBase.h" namespace mdd { enum class MathOperation : char { ADD = 1, SUBTRACT = 2, MULTIPLY = 3, DIVIDE = 4, POWER = 5, LOGARITHM = 6, MINIMUM = 7, MAXIMUM = 8, LESS_THAN = 9, GREATER_THAN = 10 }; class ModuleMath : public ModuleBase { private: MathOperation _operation; static std::vector add(const std::vector&val1, const std::vector&val2); static std::vector subtract(const std::vector&val1, const std::vector&val2); static std::vector multiply(const std::vector&val1, const std::vector&val2); static std::vector divide(const std::vector&val1, const std::vector&val2); static std::vector power(const std::vector&val1, const std::vector&val2); static std::vector logarithm(const std::vector&val1, const std::vector&val2); static std::vector minimum(const std::vector&val1, const std::vector&val2); static std::vector maximum(const std::vector&val1, const std::vector&val2); static std::vector less(const std::vector&val1, const std::vector&val2); static std::vector greater(const std::vector&val1, const std::vector&val2); public: explicit ModuleMath(MathOperation operation = MathOperation::ADD); state update() override; void setMathOperation(MathOperation operation); MathOperation getMathOperation(); }; } #endif