#ifndef ROWPROCESSOR_H #define ROWPROCESSOR_H #include #include "sourceObject.h" #include "iHaveParameters.h" #include "rowSet.h" #include "rowSetCache.h" #include "test.h" #include "scriptStorage.h" #include class Presenter; class ExecContext; /// Base class for Project2 components that work with row sets class DLL_PUBLIC RowProcessor : public IHaveParameters { public: enum EventIDs { Complete }; RowProcessor(ScriptNodePtr); void loadComplete(const CommonObjects *); const std::string recordSource; const Glib::ustring filter; const bool CROE; const bool IRSE; protected: std::shared_ptr source; void execute(ExecContext *, const RowProcessorCallback &) const; private: friend class RowState; void rowReadyInternal(const RowState *, const RowProcessorCallback &, ExecContext *) const; typedef ANONSTORAGEOF(Test) Tests; Tests tests; typedef ANONORDEREDSTORAGEOF(RowSetCache) Caches; Caches caches; typedef boost::tuple TargetCache; typedef boost::shared_ptr TargetCachePtr; typedef std::set TargetCaches; mutable TargetCaches tc; void saveCaches(ExecContext *) const; void discardCaches(ExecContext *) const; }; #endif