-/**
- * Condition for a single property.
- *
- * This condition is true only if the property returns a boolean
- * true value.
- */
-class SGPropertyCondition : public SGCondition
-{
-public:
- SGPropertyCondition ( SGPropertyNode *prop_root,
- const char * propname );
- virtual ~SGPropertyCondition ();
- virtual bool test () const { return _node->getBoolValue(); }
-private:
- SGConstPropertyNode_ptr _node;
-};
-
-
-/**
- * Condition for a 'not' operator.
- *
- * This condition is true only if the child condition is false.
- */
-class SGNotCondition : public SGCondition
-{
-public:
- SGNotCondition (SGCondition * condition);
- virtual ~SGNotCondition ();
- virtual bool test () const;
-private:
- SGSharedPtr<SGCondition> _condition;
-};
-
-
-/**
- * Condition for an 'and' group.
- *
- * This condition is true only if all of the conditions
- * in the group are true.
- */
-class SGAndCondition : public SGCondition
-{
-public:
- SGAndCondition ();
- virtual ~SGAndCondition ();
- virtual bool test () const;
- // transfer pointer ownership
- virtual void addCondition (SGCondition * condition);
-private:
- std::vector<SGSharedPtr<SGCondition> > _conditions;
-};
-
-
-/**
- * Condition for an 'or' group.
- *
- * This condition is true if at least one of the conditions in the
- * group is true.
- */
-class SGOrCondition : public SGCondition
-{
-public:
- SGOrCondition ();
- virtual ~SGOrCondition ();
- virtual bool test () const;
- // transfer pointer ownership
- virtual void addCondition (SGCondition * condition);
-private:
- std::vector<SGSharedPtr<SGCondition> > _conditions;
-};
-
-
-/**
- * Abstract base class for property comparison conditions.
- */
-class SGComparisonCondition : public SGCondition
-{
-public:
- enum Type {
- LESS_THAN,
- GREATER_THAN,
- EQUALS
- };
- SGComparisonCondition (Type type, bool reverse = false);
- virtual ~SGComparisonCondition ();
- virtual bool test () const;
- virtual void setLeftProperty( SGPropertyNode *prop_root,
- const char * propname );
- virtual void setRightProperty( SGPropertyNode *prop_root,
- const char * propname );
- // will make a local copy
- virtual void setRightValue (const SGPropertyNode * value);
-private:
- Type _type;
- bool _reverse;
- SGConstPropertyNode_ptr _left_property;
- SGConstPropertyNode_ptr _right_property;
- SGConstPropertyNode_ptr _right_value;
-};
-
-