view host/Rule.h @ 5:7fc28f7a935a

...
author cannam
date Mon, 06 Nov 2006 20:12:38 +0000
parents f0e9092bd3e4
children b30fcffc5000
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

#ifndef _RULE_H_
#define _RULE_H_

class Rule
{
public:
    enum Condition {
        EqualTo,
        GreaterThan,
        LessThan,
        NotEqualTo,
        Present,
        Changed,
        GapGreaterThan,
        GapLessThan
    };

    Rule(int pluginIndex, int outputNumber,
         Condition condition, float argument = 0.f) :
        m_pluginIndex(pluginIndex),
        m_outputNumber(outputNumber),
        m_condition(condition),
        m_argument(argument)
    { }

    int getPluginIndex() const { return m_pluginIndex; }
    int getOutputNumber() const { return m_outputNumber; }
    Condition getCondition() const { return m_condition; }
    float getArgument() const { return m_argument; }

    bool operator<(const Rule &r) const {
        if (m_pluginIndex < r.m_pluginIndex) return true;
        else if (m_pluginIndex > r.m_pluginIndex) return false;
        if (m_outputNumber < r.m_outputNumber) return true;
        else if (m_outputNumber > r.m_outputNumber) return false;
        if (int(m_condition) < int(r.m_condition)) return true;
        else if (int(m_condition) > int(r.m_condition)) return true;
        return m_argument < r.m_argument;
    }

protected:
    int m_pluginIndex;
    int m_outputNumber;
    Condition m_condition;
    float m_argument;
};

#endif