#ifndef AGGREGATE_H #define AGGREGATE_H #include "scripts.h" #include class Aggregate : public SourceObject { public: Aggregate(ScriptNodePtr); virtual void reset() const = 0; void pushValue() const; protected: virtual void pushValue(const VariableType &) const = 0; private: Variable value; }; class ValueAggregate : public Aggregate { public: ValueAggregate(ScriptNodePtr); virtual VariableType resultValue() const = 0; }; typedef boost::intrusive_ptr ValueAggregateCPtr; class SetAggregate : public Aggregate { public: typedef boost::function1 UseAgg; SetAggregate(ScriptNodePtr); virtual void onResultValues(const UseAgg &) const = 0; }; typedef boost::intrusive_ptr SetAggregateCPtr; #endif