#ifndef ROWPROCESSOR_H #define ROWPROCESSOR_H #include #include "sourceObject.h" #include "iHaveParameters.h" #include "rowSet.h" #include "cache.h" #include "xmlStorage.h" class Presenter; /// Base class for Project2 components that work with row sets class RowProcessor : public IHaveParameters { public: RowProcessor(const xmlpp::Element *); void loadComplete(const CommonObjects *); const std::string recordSource; const Glib::ustring filter; const bool CROE; const bool IRSE; protected: boost::intrusive_ptr source; void execute() const; private: friend class RowState; void rowReadyInternal(const RowState *) const; virtual void rowReady(const RowState *) const = 0; typedef ANONORDEREDSTORAGEOF(Cache) Caches; Caches caches; typedef boost::tuple TargetCache; typedef boost::shared_ptr TargetCachePtr; typedef std::set TargetCaches; mutable TargetCaches tc; void saveCaches() const; void discardCaches() const; }; #endif