diff options
Diffstat (limited to 'project2/cgi/cgiAppEngine.h')
-rw-r--r-- | project2/cgi/cgiAppEngine.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/project2/cgi/cgiAppEngine.h b/project2/cgi/cgiAppEngine.h index 6e202e4..88419fb 100644 --- a/project2/cgi/cgiAppEngine.h +++ b/project2/cgi/cgiAppEngine.h @@ -18,6 +18,7 @@ class CgiEnvironment; class Session; namespace cgicc { class HTTPHeader; + class CgiEnvironment; } namespace xmlpp { class Document; @@ -35,8 +36,8 @@ class CgiApplicationEngine : public ApplicationEngine, public TransformChainLink const Environment * env() const; SessionPtr session() const; virtual Glib::ustring resolveCurrentConfig() const; - void addAppData(const Presenter * p) const; - void addEnvData(const Presenter * p) const; + void addAppData(const MultiRowSetPresenter * p) const; + void addEnvData(const MultiRowSetPresenter * p) const; const CgiEnvironment * _env; private: @@ -48,13 +49,20 @@ class CgiApplicationEngine : public ApplicationEngine, public TransformChainLink bool checkDomain(const DomainPlatforms::value_type & i) const; void loadEngineSection(const xmlpp::Element *) const; SessionContainerPtr sessionsContainer; + // Helpers + void addVarToPresenter(const MultiRowSetPresenter * p, const Glib::ustring & name, const VariableType &) const; + typedef std::string (cgicc::CgiEnvironment::*StrEnvGetter)() const; + template <class X> + void addEnvToPresenter(const MultiRowSetPresenter * p, const char * name, X (cgicc::CgiEnvironment::*getter)() const) const { + addVarToPresenter(p, name, (_env->*getter)()); + } public: class Stage; class ResponseStage; typedef boost::intrusive_ptr<Stage> StagePtr; typedef boost::intrusive_ptr<ResponseStage> ResponseStagePtr; - typedef boost::tuple<StagePtr, ResponseStagePtr, TransformSourcePtr, PresenterPtr> NextStage; + typedef boost::tuple<StagePtr, ResponseStagePtr, TransformSourcePtr, MultiRowSetPresenterPtr> NextStage; /// Base class for a stage iteration that should eventually produce a response for the client class Stage : public virtual IntrusivePtrBase { public: |