cannam@4: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ cannam@4: cannam@4: #ifndef _RULE_H_ cannam@4: #define _RULE_H_ cannam@4: cannam@7: #include cannam@7: cannam@7: #include "Action.h" cannam@7: cannam@7: class Condition cannam@4: { cannam@4: public: cannam@7: enum Type { cannam@4: EqualTo, cannam@4: GreaterThan, cannam@4: LessThan, cannam@4: NotEqualTo, cannam@4: Present, cannam@4: Changed, cannam@4: GapGreaterThan, cannam@4: GapLessThan cannam@4: }; cannam@4: cannam@7: Condition(int pluginIndex, int outputNumber, cannam@7: Type type, float argument = 0.f) : cannam@4: m_pluginIndex(pluginIndex), cannam@4: m_outputNumber(outputNumber), cannam@7: m_type(type), cannam@4: m_argument(argument) cannam@4: { } cannam@4: cannam@4: int getPluginIndex() const { return m_pluginIndex; } cannam@4: int getOutputNumber() const { return m_outputNumber; } cannam@7: Type getType() const { return m_type; } cannam@4: float getArgument() const { return m_argument; } cannam@4: cannam@4: protected: cannam@4: int m_pluginIndex; cannam@4: int m_outputNumber; cannam@7: Type m_type; cannam@4: float m_argument; cannam@4: }; cannam@4: cannam@7: class Rule cannam@7: { cannam@7: public: cannam@9: Rule() { } cannam@7: virtual ~Rule(); cannam@7: cannam@7: void addCondition(Condition condition); cannam@9: void addAction(Action *action); // I take ownership of action cannam@7: cannam@7: typedef std::vector ConditionList; cannam@7: const ConditionList &getConditions() const { return m_conditions; } cannam@7: cannam@9: typedef std::vector ActionList; cannam@9: const ActionList &getActions() const { return m_actions; } cannam@7: cannam@7: protected: cannam@9: ConditionList m_conditions; cannam@9: ActionList m_actions; cannam@7: }; cannam@7: cannam@4: #endif