diff options
61 files changed, 241 insertions, 277 deletions
| diff --git a/project2/cgi/cgiAppEngine.cpp b/project2/cgi/cgiAppEngine.cpp index ceac940..37ae19c 100644 --- a/project2/cgi/cgiAppEngine.cpp +++ b/project2/cgi/cgiAppEngine.cpp @@ -117,35 +117,37 @@ void  CgiApplicationEngine::addEnvData(const Presenter * p) const  {  	// These were for debug... but why not pass them on? -	p->addField("servername", env()->xmlPrefix, env()->getServerName()); -	p->addField("scriptname", env()->xmlPrefix, env()->getScriptName()); +	p->addNamedValue("servername", env()->xmlPrefix, env()->getServerName()); +	p->addNamedValue("scriptname", env()->xmlPrefix, env()->getScriptName());  	// URL elements -	p->pushSub("uriElems", env()->xmlPrefix); +	p->addNewRowSet("uriElems", env()->xmlPrefix);  	BOOST_FOREACH(std::string s, _env->elems) { -		p->addField("uriElem", env()->xmlPrefix, s); +		p->addNewRow("uriElem"); +		p->addAttribute("text", s); +		p->finishRow();  	} -	p->popSub(); +	p->finishRow();  	// Parameters -	p->pushSub("params", env()->xmlPrefix); +	p->addNewRowSet("params", env()->xmlPrefix);  	BOOST_FOREACH(cgicc::FormEntry fe, _env->cgi->getElements()) { -		p->pushSub("param", env()->xmlPrefix); -		p->addAttr("name", fe.getName()); -		p->addAttr("value", fe.getValue()); -		p->popSub(); +		p->addNewRow("param"); +		p->addAttribute("name", fe.getName()); +		p->addAttribute("value", fe.getValue()); +		p->finishRow();  	} -	p->popSub(); +	p->finishRowSet();  }  static  void -addToPresenter(const Environment * env, const Presenter * p, const Glib::ustring & name, const VariableType & value) +addToPresenter(const Presenter * p, const Glib::ustring & name, const VariableType & value)  { -	p->pushSub("var", env->xmlPrefix); -	p->addAttr("value", value); -	p->addAttr("name", name); -	p->popSub(); +	p->addNewRow("var"); +	p->addAttribute("value", value); +	p->addAttribute("name", name); +	p->finishRow();  }  void @@ -153,19 +155,19 @@ CgiApplicationEngine::addAppData(const Presenter * p) const  {  	addCoreAppData(p);  	// Sessions variables -	p->pushSub("session", env()->xmlPrefix); -	p->addAttr("id", cursession->ID.str()); -	cursession->ForeachValue(boost::bind(addToPresenter, env(), p, _1, _2)); -	p->popSub(); +	p->addNewRowSet("session", env()->xmlPrefix); +	p->addAttribute("id", cursession->ID.str()); +	cursession->ForeachValue(boost::bind(addToPresenter, p, _1, _2)); +	p->finishRowSet();  	// Timing info -	p->pushSub("timing", env()->xmlPrefix); -	p->addAttr("start", startTime); +	p->addNewRowSet("timing", env()->xmlPrefix); +	p->addAttribute("start", startTime);  	if (!endTime.is_not_a_date_time()) { -		p->addAttr("end", endTime); -		p->addAttr("duration", (endTime - startTime).total_milliseconds()); +		p->addAttribute("end", endTime); +		p->addAttribute("duration", (endTime - startTime).total_milliseconds());  	} -	p->popSub(); +	p->finishRowSet();  }  SessionPtr diff --git a/project2/cgi/cgiStageDefaultError.cpp b/project2/cgi/cgiStageDefaultError.cpp index 5ba371f..82d7b2e 100644 --- a/project2/cgi/cgiStageDefaultError.cpp +++ b/project2/cgi/cgiStageDefaultError.cpp @@ -29,8 +29,8 @@ CgiApplicationEngine::DefaultErrorStage::getHeader() const  CgiApplicationEngine::NextStage  CgiApplicationEngine::DefaultErrorStage::run()  { -	pres->addField("error-type", e->xmlPrefix, buf); -	pres->addField("error-what", e->xmlPrefix, what.c_str()); +	pres->addNamedValue("error-type", e->xmlPrefix, buf); +	pres->addNamedValue("error-what", e->xmlPrefix, what.c_str());  	return NextStage(NULL, this, pres.get(), pres.get());  } diff --git a/project2/cgi/cgiStageDefaultNotFound.cpp b/project2/cgi/cgiStageDefaultNotFound.cpp index d67d892..38cc395 100644 --- a/project2/cgi/cgiStageDefaultNotFound.cpp +++ b/project2/cgi/cgiStageDefaultNotFound.cpp @@ -23,7 +23,7 @@ CgiApplicationEngine::DefaultNotFoundStage::getHeader() const  CgiApplicationEngine::NextStage  CgiApplicationEngine::DefaultNotFoundStage::run()  { -	pres->addField("missing-resource", e->xmlPrefix, nf.what()); +	pres->addNamedValue("missing-resource", e->xmlPrefix, nf.what());  	return NextStage(NULL, this, pres.get(), pres.get());  } diff --git a/project2/cgi/cgiStageFail.cpp b/project2/cgi/cgiStageFail.cpp index 04e131b..6a60700 100644 --- a/project2/cgi/cgiStageFail.cpp +++ b/project2/cgi/cgiStageFail.cpp @@ -35,8 +35,6 @@ namespace CgiApplicationExtras {  				View(e),  				code(e, "code", false, 500),  				message(e, "message", false, "Application error") { -				} -			void loadComplete(const CommonObjects *) {  			}  			void execute(const Presenter *) const {  				throw CgiApplicationEngine::ResponseStagePtr( diff --git a/project2/cgi/cgiStageRedirect.cpp b/project2/cgi/cgiStageRedirect.cpp index af938c0..c2e498f 100644 --- a/project2/cgi/cgiStageRedirect.cpp +++ b/project2/cgi/cgiStageRedirect.cpp @@ -33,8 +33,6 @@ namespace CgiApplicationExtras {  				SourceObject(e),  				View(e),  				url(e, "url", true) { -				} -			void loadComplete(const CommonObjects *) {  			}  			void execute(const Presenter *) const {  				throw CgiApplicationEngine::ResponseStagePtr( diff --git a/project2/common/appEngine.cpp b/project2/common/appEngine.cpp index 6fa71ce..59fa1ee 100644 --- a/project2/common/appEngine.cpp +++ b/project2/common/appEngine.cpp @@ -34,14 +34,14 @@ void  ApplicationEngine::addCoreAppData(const Presenter * p) const  {  	// Message log -	p->pushSub("messages", env()->xmlPrefix); +	p->addNewRowSet("messages", env()->xmlPrefix);  	BOOST_FOREACH(const Messages::value_type & m, appMessages) { -		p->pushSub("message"); -		p->addAttr("group", m->group); -		p->addAttr("text", m->message); -		p->popSub(); +		p->addNewRow("message"); +		p->addAttribute("group", m->group); +		p->addAttribute("text", m->message); +		p->finishRow();  	} -	p->popSub(); +	p->finishRowSet();  }  ApplicationEngine::Message::Message(const Glib::ustring & g, const Glib::ustring & m) : diff --git a/project2/common/cache.h b/project2/common/cache.h index e642f5f..eff24b0 100644 --- a/project2/common/cache.h +++ b/project2/common/cache.h @@ -15,7 +15,7 @@ class Cache : public IHaveParameters, public SourceObject {  		Cache(const xmlpp::Element * p);  		bool checkAndExecute(const Glib::ustring &, const Glib::ustring &, const RowProcessor *); -		virtual PresenterPtr openFor(const Glib::ustring &, const Glib::ustring &, const IHaveParameters *) = 0; +		virtual RowSetPresenterPtr openFor(const Glib::ustring &, const Glib::ustring &, const IHaveParameters *) = 0;  		virtual void save(const Glib::ustring &, const Glib::ustring &, const IHaveParameters *) = 0;  		virtual void discard(const Glib::ustring &, const Glib::ustring &, const IHaveParameters *) = 0; diff --git a/project2/common/iHaveSubTasks.cpp b/project2/common/iHaveSubTasks.cpp index dae8640..586dff8 100644 --- a/project2/common/iHaveSubTasks.cpp +++ b/project2/common/iHaveSubTasks.cpp @@ -13,11 +13,6 @@ IHaveSubTasks::~IHaveSubTasks()  }  void -IHaveSubTasks::loadComplete(const CommonObjects *) -{ -} - -void  IHaveSubTasks::run(const Tasks & tlist) const  {  	BOOST_FOREACH(const Tasks::value_type & t, tlist) { diff --git a/project2/common/iHaveSubTasks.h b/project2/common/iHaveSubTasks.h index ee6d173..c2d2022 100644 --- a/project2/common/iHaveSubTasks.h +++ b/project2/common/iHaveSubTasks.h @@ -12,7 +12,6 @@ class IHaveSubTasks : public NoOutputExecute {  		IHaveSubTasks(const std::string & n);  		virtual ~IHaveSubTasks(); -		void loadComplete(const CommonObjects*);  		virtual void execute() const = 0;  		Tasks normal; diff --git a/project2/common/if.cpp b/project2/common/if.cpp index c65315e..eac55c5 100644 --- a/project2/common/if.cpp +++ b/project2/common/if.cpp @@ -54,11 +54,6 @@ If::If(const xmlpp::Element * e) :  }  void -If::loadComplete(const CommonObjects*) -{ -} - -void  If::execute(const Presenter * presenter) const  {  	if (passes()) { diff --git a/project2/common/if.h b/project2/common/if.h index b33bca1..7a13fea 100644 --- a/project2/common/if.h +++ b/project2/common/if.h @@ -23,7 +23,6 @@ class If : public IHaveSubTasks, public View, public IfSet {  	public:  		If(const xmlpp::Element *); -		virtual void loadComplete(const CommonObjects*);  		virtual void execute(const Presenter*) const;  		virtual void execute() const; diff --git a/project2/common/library.cpp b/project2/common/library.cpp index 476df56..711e14f 100644 --- a/project2/common/library.cpp +++ b/project2/common/library.cpp @@ -23,11 +23,6 @@ Library::~Library()  	}  } -void -Library::loadComplete(const CommonObjects*) -{ -} -  STORAGEOF(Library) libraries;  class LibraryLoader : public ElementLoaderImpl<Library> {  	public: diff --git a/project2/common/library.h b/project2/common/library.h index af8e73f..523dcf4 100644 --- a/project2/common/library.h +++ b/project2/common/library.h @@ -7,7 +7,7 @@ class Library : public SourceObject {  	public:  		Library(const xmlpp::Element * p);  		~Library(); -		void loadComplete(const CommonObjects*); +  	private:  		void * handle;  }; diff --git a/project2/common/presenter.cpp b/project2/common/presenter.cpp index 48dd27e..b8fc545 100644 --- a/project2/common/presenter.cpp +++ b/project2/common/presenter.cpp @@ -4,6 +4,36 @@  #include "appEngine.h"  #include <boost/foreach.hpp> +NameValuePairPresenter::NameValuePairPresenter() +{ +} + +NameValuePairPresenter::~NameValuePairPresenter() +{ +} + +void +NameValuePairPresenter::addAttribute(const Glib::ustring & name, const VariableType & value) const +{ +	addNamedValue(name, value); +} + +RowSetPresenter::RowSetPresenter() +{ +} + +RowSetPresenter::~RowSetPresenter() +{ +} + +MultiRowSetPresenter::MultiRowSetPresenter() +{ +} + +MultiRowSetPresenter::~MultiRowSetPresenter() +{ +} +  Presenter::Presenter()  {  } @@ -19,25 +49,25 @@ Presenter::pushSub(const Glib::ustring & name) const  }  void -Presenter::addAttr(const Glib::ustring & name, const VariableType & value) const +Presenter::addAttribute(const Glib::ustring & name, const VariableType & value) const  { -	addAttr(name, Glib::ustring(), value); +	addAttribute(name, Glib::ustring(), value);  }  void -Presenter::addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +Presenter::addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  { -	addField(name, ns, value); +	addNamedValue(name, ns, value);  }  void -Presenter::addField(const Glib::ustring & name, const VariableType & value) const +Presenter::addNamedValue(const Glib::ustring & name, const VariableType & value) const  { -	addField(name, Glib::ustring(), value); +	addNamedValue(name, Glib::ustring(), value);  }  void -Presenter::addField(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +Presenter::addNamedValue(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  {  	pushSub(name, ns);  	addText(value); @@ -49,3 +79,39 @@ ContentPresenter::ContentPresenter(const Glib::ustring & ct) :  {  } + +void +Presenter::addNewRowSet(const Glib::ustring & name) const +{ +	pushSub(name); +} +void +Presenter::addNewRowSet(const Glib::ustring & name, const Glib::ustring & ns) const +{ +	pushSub(name, ns); +} +void +Presenter::addNewRow(const Glib::ustring & name) const +{ +	pushSub(name); +} +void +Presenter::finishRow() const +{ +	popSub(); +} +void +Presenter::finishRowSet() const +{ +	popSub(); +} + +void +MultiRowSetPresenter::declareNamespace(const Glib::ustring &, const Glib::ustring &) const +{ +} +void +MultiRowSetPresenter::setNamespace(const Glib::ustring &, const Glib::ustring &) const +{ +} + diff --git a/project2/common/presenter.h b/project2/common/presenter.h index a4c0a00..8ba7e6b 100644 --- a/project2/common/presenter.h +++ b/project2/common/presenter.h @@ -9,21 +9,57 @@  #include "paramChecker.h"  #include "xmlObjectLoader.h" -class Presenter : public virtual IntrusivePtrBase { +class NameValuePairPresenter : public virtual IntrusivePtrBase { +	public: +		NameValuePairPresenter(); +		virtual ~NameValuePairPresenter(); + +		virtual void addNamedValue(const Glib::ustring & name, const VariableType & value) const = 0; +		virtual void addAttribute(const Glib::ustring & name, const VariableType & value) const; +}; + +class RowSetPresenter : public NameValuePairPresenter { +	public: +		RowSetPresenter(); +		virtual ~RowSetPresenter() = 0; + +		virtual void addNewRow(const Glib::ustring & name) const = 0; +		virtual void finishRow() const = 0; +}; + +class MultiRowSetPresenter : public RowSetPresenter { +	public: +		MultiRowSetPresenter(); +		virtual ~MultiRowSetPresenter() = 0; + +		virtual void declareNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const; +		virtual void setNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const; + +		virtual void addNewRowSet(const Glib::ustring & name) const = 0; +		virtual void addNewRowSet(const Glib::ustring & name, const Glib::ustring & ns) const = 0; +		virtual void finishRowSet() const = 0; +}; + +class Presenter : public MultiRowSetPresenter {  	public:  		Presenter();  		virtual ~Presenter() = 0; -		virtual void declareNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const = 0;  		virtual void pushSub(const Glib::ustring & name) const;  		virtual void pushSub(const Glib::ustring & name, const Glib::ustring & ns) const = 0; -		virtual void setNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const = 0; -		virtual void addAttr(const Glib::ustring & name, const VariableType & value) const; -		virtual void addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; -		virtual void addField(const Glib::ustring & name, const VariableType & value) const; -		virtual void addField(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +		virtual void addAttribute(const Glib::ustring & name, const VariableType & value) const; +		virtual void addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +		virtual void addNamedValue(const Glib::ustring & name, const VariableType & value) const; +		virtual void addNamedValue(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const;  		virtual void addText(const VariableType & value) const = 0;  		virtual void popSub() const = 0; + +		// RowPresenter implementation +		void addNewRowSet(const Glib::ustring & name) const; +		void addNewRowSet(const Glib::ustring & name, const Glib::ustring & ns) const; +		void addNewRow(const Glib::ustring & name) const; +		void finishRow() const; +		void finishRowSet() const;  };  class ContentPresenter : public Presenter { @@ -34,6 +70,8 @@ class ContentPresenter : public Presenter {  typedef boost::intrusive_ptr<const Presenter> PresenterCPtr;  typedef boost::intrusive_ptr<Presenter> PresenterPtr; +typedef boost::intrusive_ptr<RowSetPresenter> RowSetPresenterPtr; +typedef boost::intrusive_ptr<NameValuePairPresenter> NameValuePairPresenterPtr;  /// Base class to implement presenter modules  class PresenterLoader : public ComponentLoader { diff --git a/project2/common/rowProcessor.cpp b/project2/common/rowProcessor.cpp index 1e81dc6..b2d3cbd 100644 --- a/project2/common/rowProcessor.cpp +++ b/project2/common/rowProcessor.cpp @@ -36,7 +36,7 @@ RowProcessor::execute() const  		if (c->checkAndExecute(source->name, filter, this)) {  			return;  		} -		PresenterPtr p = c->openFor(source->name, filter, this); +		RowSetPresenterPtr p = c->openFor(source->name, filter, this);  		if (p) {  			tc.insert(TargetCachePtr(new TargetCache(p, c)));  		} @@ -75,10 +75,10 @@ void  RowProcessor::rowReadyInternal(const RowState * rs) const  {  	BOOST_FOREACH(const TargetCaches::value_type & c, tc) { -		c->get<0>()->pushSub(filter.empty() ? "row" : filter); -		rs->foreachColumn(boost::bind(&Presenter::addField, c->get<0>(), _2, _3)); -		rs->foreachAttr(boost::bind(&Presenter::addAttr, c->get<0>(), _1, _2)); -		c->get<0>()->popSub(); +		c->get<0>()->addNewRow(filter.empty() ? "row" : filter); +		rs->foreachColumn(boost::bind(&RowSetPresenter::addNamedValue, c->get<0>(), _2, _3)); +		rs->foreachAttr(boost::bind(&RowSetPresenter::addAttribute, c->get<0>(), _1, _2)); +		c->get<0>()->finishRow();  	}  	rowReady(rs);  } diff --git a/project2/common/rowProcessor.h b/project2/common/rowProcessor.h index 8a52e01..e435bf4 100644 --- a/project2/common/rowProcessor.h +++ b/project2/common/rowProcessor.h @@ -31,7 +31,7 @@ class RowProcessor : public IHaveParameters {  		virtual void rowReady(const RowState *) const = 0;  		typedef ANONORDEREDSTORAGEOF(Cache) Caches;  		Caches caches; -		typedef boost::tuple<PresenterPtr, CachePtr> TargetCache; +		typedef boost::tuple<RowSetPresenterPtr, CachePtr> TargetCache;  		typedef boost::shared_ptr<TargetCache> TargetCachePtr;  		typedef std::set<TargetCachePtr> TargetCaches;  		mutable TargetCaches tc; diff --git a/project2/common/rowView.cpp b/project2/common/rowView.cpp index 7173c19..000222d 100644 --- a/project2/common/rowView.cpp +++ b/project2/common/rowView.cpp @@ -40,25 +40,25 @@ RowView::loadComplete(const CommonObjects * co)  void  RowView::rowReady(const RowState * rs) const  { -	presenter->pushSub(recordName()); +	presenter->addNewRow(recordName());  	if (viewColumns.empty()) { -		rs->foreachColumn(boost::bind(&Presenter::addField, presenter, _2, _3)); +		rs->foreachColumn(boost::bind(&RowSetPresenter::addNamedValue, presenter, _2, _3));  	}  	else {  		BOOST_FOREACH(const Columns::value_type & col, viewColumns) { -			presenter->addField(col.first, col.second); +			presenter->addNamedValue(col.first, col.second);  		}  	}  	executeChildren(); -	presenter->popSub(); +	presenter->finishRow();  }  void  RowView::execute(const Presenter * p) const  {  	presenter = p; -	presenter->pushSub(rootName()); -	ScopeObject pres(boost::bind(&Presenter::popSub, p)); +	presenter->addNewRowSet(rootName()); +	ScopeObject pres(boost::bind(&MultiRowSetPresenter::finishRowSet, p));  	RowProcessor::execute();  } diff --git a/project2/common/sessionClearTask.cpp b/project2/common/sessionClearTask.cpp index 0781c54..17dcf8f 100644 --- a/project2/common/sessionClearTask.cpp +++ b/project2/common/sessionClearTask.cpp @@ -19,11 +19,6 @@ SessionClearTask::~SessionClearTask()  }  void -SessionClearTask::loadComplete(const CommonObjects *) -{ -} - -void  SessionClearTask::execute() const  {  	ApplicationEngine::getCurrent()->session()->ClearValue(key); diff --git a/project2/common/sessionClearTask.h b/project2/common/sessionClearTask.h index 8241f8a..5df0aa5 100644 --- a/project2/common/sessionClearTask.h +++ b/project2/common/sessionClearTask.h @@ -15,7 +15,7 @@ class SessionClearTask : public Task {  	public:  		SessionClearTask(const xmlpp::Element * p);  		virtual ~SessionClearTask(); -		virtual void loadComplete(const CommonObjects *); +  		void execute() const;  		const Glib::ustring key; diff --git a/project2/common/sessionSetTask.cpp b/project2/common/sessionSetTask.cpp index 7a90bca..69e05c5 100644 --- a/project2/common/sessionSetTask.cpp +++ b/project2/common/sessionSetTask.cpp @@ -20,11 +20,6 @@ SessionSetTask::~SessionSetTask()  }  void -SessionSetTask::loadComplete(const CommonObjects *) -{ -} - -void  SessionSetTask::execute() const  {  	ApplicationEngine::getCurrent()->session()->SetValue(key, value); diff --git a/project2/common/sessionSetTask.h b/project2/common/sessionSetTask.h index f439768..1fddbba 100644 --- a/project2/common/sessionSetTask.h +++ b/project2/common/sessionSetTask.h @@ -16,7 +16,7 @@ class SessionSetTask : public Task {  	public:  		SessionSetTask(const xmlpp::Element * p);  		virtual ~SessionSetTask(); -		virtual void loadComplete(const CommonObjects *); +  		void execute() const;  		const Glib::ustring key; diff --git a/project2/common/sourceObject.cpp b/project2/common/sourceObject.cpp index 9de39b4..f0423cb 100644 --- a/project2/common/sourceObject.cpp +++ b/project2/common/sourceObject.cpp @@ -19,3 +19,8 @@ SourceObject::~SourceObject()  {  } +void +SourceObject::loadComplete(const CommonObjects *) +{ +} + diff --git a/project2/common/sourceObject.h b/project2/common/sourceObject.h index 3ebae2c..6a6df55 100644 --- a/project2/common/sourceObject.h +++ b/project2/common/sourceObject.h @@ -15,7 +15,7 @@ class SourceObject : public virtual IntrusivePtrBase {  		SourceObject(const std::string & name);  		virtual ~SourceObject() = 0; -		virtual void loadComplete(const CommonObjects *) = 0; +		virtual void loadComplete(const CommonObjects *);  		const std::string name;  		const unsigned int order; diff --git a/project2/common/validDateCheck.cpp b/project2/common/validDateCheck.cpp index 4e2fa49..6f731bb 100644 --- a/project2/common/validDateCheck.cpp +++ b/project2/common/validDateCheck.cpp @@ -19,11 +19,6 @@ class ValidDateCheck : public ParamChecker {  		{  		} -		void -		loadComplete(const CommonObjects *) -		{ -		} -  		bool  		performCheck() const  		{ diff --git a/project2/common/variables.cpp b/project2/common/variables.cpp index 261e942..74bdecd 100644 --- a/project2/common/variables.cpp +++ b/project2/common/variables.cpp @@ -8,7 +8,6 @@  #include "rowSet.h"  #include <libxml++/nodes/textnode.h>  #include <stdexcept> -#include <boost/tokenizer.hpp>  #include <boost/foreach.hpp>  #include <boost/algorithm/string/predicate.hpp>  #include <boost/function.hpp> @@ -19,25 +18,30 @@ SimpleMessageException(UnknownVariableType);  SimpleMessageException(UnknownVariableSource);  SimpleMessageException(NoVariableDefinition); -bool Null::operator<(const Null &) const +bool +Null::operator<(const Null &) const  {  	return false;  } -bool Boolean::operator<(const Boolean & b) const +bool +Boolean::operator<(const Boolean & b) const  {  	return ((this->value == false) && (b.value == true));  } +  Boolean::operator bool() const  {  	return this->value;  } +  std::basic_ostream<char> &  operator<<(std::basic_ostream<char> & os, const Boolean & b)  {  	os << (b.value ? "true" : "false");  	return os;  } +  std::basic_ostream<unsigned char> &  operator<<(std::basic_ostream<unsigned char> & os, const Boolean & b)  { @@ -76,6 +80,7 @@ getVariableTypeFromName(const std::string & src)  	if (src == "datetime") return DateTime;  	throw UnknownVariableType(src);  } +  static  VariableType  makeVariableType(const Glib::ustring & src, const VT_typeID format = DefaultType) @@ -180,6 +185,7 @@ class comp : public boost::static_visitor<bool> {  	private:  		const VariableType & _a;  }; +  bool  VariableType::operator<(const VariableType & b) const  { diff --git a/project2/common/viewHost.cpp b/project2/common/viewHost.cpp index 41ed05b..7f7d6c7 100644 --- a/project2/common/viewHost.cpp +++ b/project2/common/viewHost.cpp @@ -73,24 +73,24 @@ ViewHost::PresenterMultiplexer::pushSub(const Glib::ustring & name, const Glib::  	FOREACH_PRESENTER { p->pushSub(name, ns); }  }  void -ViewHost::PresenterMultiplexer::addAttr(const Glib::ustring & name, const VariableType & value) const +ViewHost::PresenterMultiplexer::addAttribute(const Glib::ustring & name, const VariableType & value) const  { -	FOREACH_PRESENTER { p->addAttr(name, value); } +	FOREACH_PRESENTER { p->addAttribute(name, value); }  }  void -ViewHost::PresenterMultiplexer::addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +ViewHost::PresenterMultiplexer::addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  { -	FOREACH_PRESENTER { p->addAttr(name, ns, value); } +	FOREACH_PRESENTER { p->addAttribute(name, ns, value); }  }  void -ViewHost::PresenterMultiplexer::addField(const Glib::ustring & name, const VariableType & value) const +ViewHost::PresenterMultiplexer::addNamedValue(const Glib::ustring & name, const VariableType & value) const  { -	FOREACH_PRESENTER { p->addField(name, value); } +	FOREACH_PRESENTER { p->addNamedValue(name, value); }  }  void -ViewHost::PresenterMultiplexer::addField(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +ViewHost::PresenterMultiplexer::addNamedValue(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  { -	FOREACH_PRESENTER { p->addField(name, ns, value); } +	FOREACH_PRESENTER { p->addNamedValue(name, ns, value); }  }  void  ViewHost::PresenterMultiplexer::addText(const VariableType & value) const diff --git a/project2/common/viewHost.h b/project2/common/viewHost.h index 5995d82..d5e8695 100644 --- a/project2/common/viewHost.h +++ b/project2/common/viewHost.h @@ -18,10 +18,10 @@ class ViewHost : virtual public XmlScriptParser, virtual public CheckHost {  				void setNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const;  				void pushSub(const Glib::ustring & name) const;  				void pushSub(const Glib::ustring & name, const Glib::ustring & ns) const; -				void addAttr(const Glib::ustring & name, const VariableType & value) const; -				void addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; -				void addField(const Glib::ustring & name, const VariableType & value) const; -				void addField(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +				void addAttribute(const Glib::ustring & name, const VariableType & value) const; +				void addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +				void addNamedValue(const Glib::ustring & name, const VariableType & value) const; +				void addNamedValue(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const;  				void addText(const VariableType & value) const;  				void popSub() const;  				Presenters presenters; diff --git a/project2/console/consolePresenter.cpp b/project2/console/consolePresenter.cpp index d1aeeb7..47c846a 100644 --- a/project2/console/consolePresenter.cpp +++ b/project2/console/consolePresenter.cpp @@ -10,16 +10,6 @@ ConsolePresenter::ConsolePresenter(const xmlpp::Element *) :  }  void -ConsolePresenter::declareNamespace(const Glib::ustring &, const Glib::ustring &) const -{ -} - -void -ConsolePresenter::setNamespace(const Glib::ustring &, const Glib::ustring &) const -{ -} - -void  ConsolePresenter::pushSub(const Glib::ustring & name, const Glib::ustring & ns) const  {  	fprintf(stdout, "%*s", indent, ""); @@ -32,7 +22,7 @@ ConsolePresenter::pushSub(const Glib::ustring & name, const Glib::ustring & ns)  }  void -ConsolePresenter::addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +ConsolePresenter::addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  {  	fprintf(stdout, "%*s", indent, "");  	if (!ns.empty()) { @@ -44,7 +34,7 @@ ConsolePresenter::addAttr(const Glib::ustring & name, const Glib::ustring & ns,  }  void -ConsolePresenter::addField(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +ConsolePresenter::addNamedValue(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  {  	fprintf(stdout, "%*s", indent, "");  	if (!ns.empty()) { diff --git a/project2/console/consolePresenter.h b/project2/console/consolePresenter.h index dc409ab..a411765 100644 --- a/project2/console/consolePresenter.h +++ b/project2/console/consolePresenter.h @@ -7,11 +7,9 @@  class ConsolePresenter : public Presenter {  	public:  		ConsolePresenter(const xmlpp::Element *); -		void declareNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const; -		void setNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const;  		void pushSub(const Glib::ustring & ns, const Glib::ustring & name) const; -		void addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; -		void addField(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +		void addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +		void addNamedValue(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const;  		void addText(const VariableType & value) const;  		void popSub() const;  		void write(const boost::function1<std::ostream *, const std::string &> &) const; diff --git a/project2/files/fileRows.cpp b/project2/files/fileRows.cpp index d7c8fca..8ba5c0c 100644 --- a/project2/files/fileRows.cpp +++ b/project2/files/fileRows.cpp @@ -18,11 +18,6 @@ FileRows::~FileRows()  }  void -FileRows::loadComplete(const CommonObjects *) -{ -} - -void  FileRows::setFilter(const Glib::ustring &)  {  	throw NotSupported(__PRETTY_FUNCTION__); diff --git a/project2/files/fileRows.h b/project2/files/fileRows.h index 0cf3f1d..7d92d20 100644 --- a/project2/files/fileRows.h +++ b/project2/files/fileRows.h @@ -13,7 +13,6 @@ class FileRows : public StreamRows {  		~FileRows();  		void execute(const Glib::ustring &, const RowProcessor *) const; -		virtual void loadComplete(const CommonObjects *);  		virtual void setFilter(const Glib::ustring &);  		const Variable path; diff --git a/project2/files/fsRows.cpp b/project2/files/fsRows.cpp index cb73b04..a76cc02 100644 --- a/project2/files/fsRows.cpp +++ b/project2/files/fsRows.cpp @@ -136,11 +136,6 @@ FsRows::~FsRows()  {  } -void -FsRows::loadComplete(const CommonObjects *) -{ -} -  FsRows::Path  normalisePath(const std::string & p)  { diff --git a/project2/files/fsRows.h b/project2/files/fsRows.h index 3356b37..6ef6b31 100644 --- a/project2/files/fsRows.h +++ b/project2/files/fsRows.h @@ -32,7 +32,6 @@ class FsRows : public RowSet {  		~FsRows();  		void execute(const Glib::ustring &, const RowProcessor *) const; -		virtual void loadComplete(const CommonObjects *);  		class SearchState : public RowState {  			public:  				SearchState(const boost::filesystem::path & r); diff --git a/project2/mail/sendmailTask.cpp b/project2/mail/sendmailTask.cpp index e335d30..18be222 100644 --- a/project2/mail/sendmailTask.cpp +++ b/project2/mail/sendmailTask.cpp @@ -59,11 +59,6 @@ SendMailTask::~SendMailTask()  {  } -void -SendMailTask::loadComplete(const CommonObjects *) -{ -} -  const char *  SendMailTask::writeMailWrapper(void ** buf, int * len, void * arg)  { diff --git a/project2/mail/sendmailTask.h b/project2/mail/sendmailTask.h index 8c427dd..5b10d44 100644 --- a/project2/mail/sendmailTask.h +++ b/project2/mail/sendmailTask.h @@ -33,7 +33,6 @@ class SendMailTask : public Task {  		SendMailTask(const xmlpp::Element * p);  		virtual ~SendMailTask(); -		virtual void loadComplete(const CommonObjects *);  		virtual void execute() const;  	protected: diff --git a/project2/processes/procRows.cpp b/project2/processes/procRows.cpp index f1d00e0..c868323 100644 --- a/project2/processes/procRows.cpp +++ b/project2/processes/procRows.cpp @@ -16,11 +16,6 @@ ProcRows::~ProcRows()  {  } -void -ProcRows::loadComplete(const CommonObjects *) -{ -} -  FileStarChannel  ProcRows::doOpen() const  { diff --git a/project2/processes/procRows.h b/project2/processes/procRows.h index 63dbb8e..09b6f04 100644 --- a/project2/processes/procRows.h +++ b/project2/processes/procRows.h @@ -9,7 +9,6 @@ class ProcRows : public FileRows {  		ProcRows(const xmlpp::Element * p);  		~ProcRows(); -		virtual void loadComplete(const CommonObjects *);  		virtual FileStarChannel doOpen() const;  		static int doClose(FILE*);  }; diff --git a/project2/regex/regexCheck.cpp b/project2/regex/regexCheck.cpp index b88a44c..1a1add3 100644 --- a/project2/regex/regexCheck.cpp +++ b/project2/regex/regexCheck.cpp @@ -16,11 +16,6 @@ RegexCheck::~RegexCheck()  {  } -void -RegexCheck::loadComplete(const CommonObjects *) -{ -} -  bool  RegexCheck::performCheck() const  { diff --git a/project2/regex/regexCheck.h b/project2/regex/regexCheck.h index 17033de..c4f6e02 100644 --- a/project2/regex/regexCheck.h +++ b/project2/regex/regexCheck.h @@ -10,7 +10,6 @@ class RegexCheck : public ParamChecker {  		RegexCheck(const xmlpp::Element * p);  		virtual ~RegexCheck(); -		virtual void loadComplete(const CommonObjects *);  		bool performCheck() const;  		const Variable applyTo; diff --git a/project2/regex/regexRows.cpp b/project2/regex/regexRows.cpp index 1dab636..a822cf1 100644 --- a/project2/regex/regexRows.cpp +++ b/project2/regex/regexRows.cpp @@ -19,11 +19,6 @@ RegexRows::~RegexRows()  }  void -RegexRows::loadComplete(const CommonObjects*) -{ -} - -void  RegexRows::execute(const Glib::ustring&, const RowProcessor * rp) const  {  	Glib::RefPtr<Glib::Regex> reg = Glib::Regex::create(regex(), Glib::REGEX_CASELESS | Glib::REGEX_DOTALL); diff --git a/project2/regex/regexRows.h b/project2/regex/regexRows.h index cef2e71..21d9dfa 100644 --- a/project2/regex/regexRows.h +++ b/project2/regex/regexRows.h @@ -9,7 +9,7 @@ class RegexRows : public DefinedColumns, public RowSet {  	public:  		RegexRows(const xmlpp::Element * p);  		~RegexRows(); -		void loadComplete(const CommonObjects*); +  		void execute(const Glib::ustring&, const RowProcessor*) const;  	private: diff --git a/project2/sql/rdbmsDataSource.cpp b/project2/sql/rdbmsDataSource.cpp index 77d6fbf..20ccaec 100644 --- a/project2/sql/rdbmsDataSource.cpp +++ b/project2/sql/rdbmsDataSource.cpp @@ -57,11 +57,6 @@ RdbmsDataSource::~RdbmsDataSource()  {  } -void -RdbmsDataSource::loadComplete(const CommonObjects *) -{ -} -  const DB::Connection &  RdbmsDataSource::getWritable() const  { diff --git a/project2/sql/rdbmsDataSource.h b/project2/sql/rdbmsDataSource.h index fdcfbe7..60206ff 100644 --- a/project2/sql/rdbmsDataSource.h +++ b/project2/sql/rdbmsDataSource.h @@ -53,7 +53,6 @@ class RdbmsDataSource : public DataSource {  		const DB::Connection & getReadonly() const;  		const DB::Connection & getWritable() const; -		virtual void loadComplete(const CommonObjects *);  		virtual void commit();  		virtual void rollback(); diff --git a/project2/sql/sqlCache.cpp b/project2/sql/sqlCache.cpp index d6875ac..5435dc4 100644 --- a/project2/sql/sqlCache.cpp +++ b/project2/sql/sqlCache.cpp @@ -62,8 +62,6 @@ class SqlCache : public Cache {  				SqlCacheRowSet(SelectPtr r) :  					RowSet(NULL),  					s(r) { -					} -				void loadComplete(const CommonObjects *) {  				}  				class SqlCacheRowState : public RowState {  					public: @@ -149,78 +147,61 @@ class SqlCache : public Cache {  			return NULL;  		} -		class SqlCachePresenter : public Presenter { +		class SqlCachePresenter : public RowSetPresenter {  			public:  				SqlCachePresenter(const Glib::ustring & name, const Glib::ustring & filter, const RdbmsDataSource * d) : -					depth(0),  					row(1),  					db(d),  					n(name),  					f(filter) {  				} -				void declareNamespace(const Glib::ustring &, const Glib::ustring &) const { } -				void setNamespace(const Glib::ustring &, const Glib::ustring &) const { } -				void pushSub(const Glib::ustring & name, const Glib::ustring &) const { -					depth += 1; -					if (depth == 2) { -						col = name; -					} -					else if (depth == 1) { -					} +				void addNewRow(const Glib::ustring &) const {  				} -				void addAttr(const Glib::ustring & name, const Glib::ustring &, const VariableType & value) const { -					attrs.insert(Values::value_type(name, value)); +				void addAttribute(const Glib::ustring & name, const VariableType & value) const { +					attrs[name] = value;  				} -				void addText(const VariableType & value) const { -					cols.insert(Values::value_type(col, value)); +				void addNamedValue(const Glib::ustring & name, const VariableType & value) const { +					cols[name] = value;  				} -				void popSub() const { -					if (depth == 2) { -						col.clear(); +				void finishRow() const { +					Buffer sql; +					sql.appendf("INSERT INTO %s_%s_%s_rows(p2_row", HeaderTable.c_str(), n.c_str(), f.c_str()); +					BOOST_FOREACH(const Values::value_type & a, attrs) { +						sql.appendf(", p2attr_%s", a.first.c_str());  					} -					else if (depth == 1) { -						Buffer sql; -						sql.appendf("INSERT INTO %s_%s_%s_rows(p2_row", HeaderTable.c_str(), n.c_str(), f.c_str()); -						BOOST_FOREACH(const Values::value_type & a, attrs) { -							sql.appendf(", p2attr_%s", a.first.c_str()); -						} -						BOOST_FOREACH(const Values::value_type & v, cols) { -							sql.appendf(", %s", v.first.c_str()); -						} -						sql.appendf(") VALUES(?"); -						for (size_t x = attrs.size(); x > 0; x -= 1) { -							sql.append(", ?"); -						} -						for (size_t x = cols.size(); x > 0; x -= 1) { -							sql.append(", ?"); -						} -						sql.appendf(")"); -						ModifyPtr m(db->getWritable().newModifyCommand(sql)); -						unsigned int offset = 0; -						m->bindParamI(offset++, row++); -						BOOST_FOREACH(const Values::value_type & a, attrs) { -							boost::apply_visitor<const SqlVariableBinder, const VariableType>(SqlVariableBinder(m.get(), offset++), a.second); -						} -						BOOST_FOREACH(const Values::value_type & v, cols) { -							boost::apply_visitor<const SqlVariableBinder, const VariableType>(SqlVariableBinder(m.get(), offset++), v.second); -						} -						m->execute(); -						cols.clear(); -						attrs.clear(); +					BOOST_FOREACH(const Values::value_type & v, cols) { +						sql.appendf(", %s", v.first.c_str()); +					} +					sql.appendf(") VALUES(?"); +					for (size_t x = attrs.size(); x > 0; x -= 1) { +						sql.append(", ?"); +					} +					for (size_t x = cols.size(); x > 0; x -= 1) { +						sql.append(", ?"); +					} +					sql.appendf(")"); +					ModifyPtr m(db->getWritable().newModifyCommand(sql)); +					unsigned int offset = 0; +					m->bindParamI(offset++, row++); +					BOOST_FOREACH(const Values::value_type & a, attrs) { +						boost::apply_visitor<const SqlVariableBinder, const VariableType>(SqlVariableBinder(m.get(), offset++), a.second); +					} +					BOOST_FOREACH(const Values::value_type & v, cols) { +						boost::apply_visitor<const SqlVariableBinder, const VariableType>(SqlVariableBinder(m.get(), offset++), v.second);  					} -					depth -= 1; +					m->execute(); +					cols.clear(); +					attrs.clear();  				}  			private: -				mutable unsigned int depth;  				mutable unsigned int row;  				const RdbmsDataSource * db; -				mutable Glib::ustring col;  				const Glib::ustring n, f;  				typedef std::map<Glib::ustring, VariableType> Values;  				mutable Values cols, attrs;  		}; -		PresenterPtr openFor(const Glib::ustring & n, const Glib::ustring & f, const IHaveParameters * ps) +		RowSetPresenterPtr openFor(const Glib::ustring & n, const Glib::ustring & f, const IHaveParameters * ps)  		{  			Buffer sp;  			sp.appendf("SAVEPOINT sp%p", this); diff --git a/project2/sql/sqlMergeTask.cpp b/project2/sql/sqlMergeTask.cpp index 30d3a59..f98d57e 100644 --- a/project2/sql/sqlMergeTask.cpp +++ b/project2/sql/sqlMergeTask.cpp @@ -27,8 +27,6 @@ class SqlMergeInsert : IHaveParameters, public Task {  			IHaveParameters(p),  			Task(p) {  		} -		void loadComplete(const CommonObjects*) { -		}  		void execute() const {  			unsigned int col = 0;  			BOOST_FOREACH(const Parameters::value_type & v, parameters) { @@ -239,9 +237,6 @@ class Populate : public NoOutputExecute {  			cmd(c)  		{  		} -		virtual void loadComplete(const CommonObjects *) -		{ -		}  		void execute() const  		{  			unsigned int idx = 0; diff --git a/project2/url/urlRows.cpp b/project2/url/urlRows.cpp index cfacea4..b3abddd 100644 --- a/project2/url/urlRows.cpp +++ b/project2/url/urlRows.cpp @@ -19,11 +19,6 @@ UrlRows::~UrlRows()  {  } -void -UrlRows::loadComplete(const CommonObjects *) -{ -} -  size_t  UrlRows::handleData(ParseState * ps, const char * bytes, size_t bytesLen) const  { diff --git a/project2/url/urlRows.h b/project2/url/urlRows.h index cd209c8..9bd4302 100644 --- a/project2/url/urlRows.h +++ b/project2/url/urlRows.h @@ -14,7 +14,6 @@ class UrlRows : public StreamRows, VariableCurlHelper {  		UrlRows(const xmlpp::Element * p);  		~UrlRows(); -		virtual void loadComplete(const CommonObjects *);  		void execute(const Glib::ustring &, const RowProcessor *) const;  	private: diff --git a/project2/xml/rawView.cpp b/project2/xml/rawView.cpp index f033542..2070a2f 100644 --- a/project2/xml/rawView.cpp +++ b/project2/xml/rawView.cpp @@ -19,11 +19,6 @@ RawView::RawView(const xmlpp::Element * p) :  }  void -RawView::loadComplete(const CommonObjects *) -{ -} - -void  RawView::execute(const Presenter * p) const  {  	BOOST_FOREACH(xmlpp::Node * node, copyRoot->get_children()) { @@ -41,7 +36,7 @@ RawView::copyNode(const Presenter * p, const xmlpp::Element * n) const  	p->setNamespace(n->get_namespace_prefix(), n->get_namespace_uri());  	xmlpp::Element::AttributeList al = n->get_attributes();  	BOOST_FOREACH(const xmlpp::Attribute * a, al) { -		p->addAttr(a->get_name(), a->get_value()); +		p->addAttribute(a->get_name(), a->get_value());  	}  	const xmlpp::Node::NodeList ch = n->get_children();  	BOOST_FOREACH(const xmlpp::Node * c, ch) { diff --git a/project2/xml/rawView.h b/project2/xml/rawView.h index b192c89..87fcd5e 100644 --- a/project2/xml/rawView.h +++ b/project2/xml/rawView.h @@ -11,7 +11,7 @@ class RawView : public View {  	public:  		RawView(const xmlpp::Element * p);  		void execute(const Presenter *) const; -		virtual void loadComplete(const CommonObjects *); +  	private:  		void copyNode(const Presenter *, const xmlpp::Element *) const;  		const xmlpp::Element * copyRoot; diff --git a/project2/xml/xmlCache.cpp b/project2/xml/xmlCache.cpp index c79af2c..64e5f86 100644 --- a/project2/xml/xmlCache.cpp +++ b/project2/xml/xmlCache.cpp @@ -19,10 +19,6 @@ class XmlCache : public Cache {  		{  		} -		void loadComplete(const CommonObjects*) -		{ -		} -  		RowSetCPtr getCachedRowSet(const Glib::ustring & n, const Glib::ustring & f, const IHaveParameters * ps) const  		{  			boost::filesystem::path cache = getCacheFile(n, f, ps); @@ -37,7 +33,7 @@ class XmlCache : public Cache {  			return NULL;  		} -		PresenterPtr openFor(const Glib::ustring & n, const Glib::ustring &, const IHaveParameters *) +		RowSetPresenterPtr openFor(const Glib::ustring & n, const Glib::ustring &, const IHaveParameters *)  		{  			writeTo = new XmlPresenter(n, Glib::ustring(), Glib::ustring());  			return writeTo; diff --git a/project2/xml/xmlDocumentPrefetch.cpp b/project2/xml/xmlDocumentPrefetch.cpp index cfb5191..9ac912e 100644 --- a/project2/xml/xmlDocumentPrefetch.cpp +++ b/project2/xml/xmlDocumentPrefetch.cpp @@ -31,12 +31,6 @@ XmlDocumentPrefetch::execute() const  	queue(url(), encoding());  } -void -XmlDocumentPrefetch::loadComplete(const CommonObjects *) -{ -} - -  CurlPtr  XmlDocumentPrefetch::newCurl() const  { diff --git a/project2/xml/xmlDocumentPrefetch.h b/project2/xml/xmlDocumentPrefetch.h index 902b7be..d8df77b 100644 --- a/project2/xml/xmlDocumentPrefetch.h +++ b/project2/xml/xmlDocumentPrefetch.h @@ -15,7 +15,6 @@ class XmlDocumentPrefetch : public View, public Task, XmlDocumentCache, Variable  		void execute(const Presenter*) const;  		void execute() const; -		void loadComplete(const CommonObjects *);  		const Variable html;  		const Variable warnings; diff --git a/project2/xml/xmlPresenter.cpp b/project2/xml/xmlPresenter.cpp index 58321ba..249e4f4 100644 --- a/project2/xml/xmlPresenter.cpp +++ b/project2/xml/xmlPresenter.cpp @@ -77,7 +77,7 @@ XmlPresenter::pushSub(const Glib::ustring & name, const Glib::ustring & ns) cons  }  void -XmlPresenter::addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const +XmlPresenter::addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const  {  	if (!value.get<Null>()) {  		nodeStack.back()->set_attribute(name, value, ns); diff --git a/project2/xml/xmlPresenter.h b/project2/xml/xmlPresenter.h index ae40470..bfb3375 100644 --- a/project2/xml/xmlPresenter.h +++ b/project2/xml/xmlPresenter.h @@ -18,7 +18,7 @@ class XmlPresenter : public ContentPresenter, public SourceOf<xmlpp::Document>,  		void declareNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const;  		void setNamespace(const Glib::ustring & prefix, const Glib::ustring & ns) const;  		void pushSub(const Glib::ustring & name, const Glib::ustring & ns) const; -		void addAttr(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const; +		void addAttribute(const Glib::ustring & name, const Glib::ustring & ns, const VariableType & value) const;  		void addText(const VariableType & value) const;  		void popSub() const; diff --git a/project2/xml/xmlRawRows.cpp b/project2/xml/xmlRawRows.cpp index c227b2c..73685aa 100644 --- a/project2/xml/xmlRawRows.cpp +++ b/project2/xml/xmlRawRows.cpp @@ -52,10 +52,6 @@ XmlRawRowsBase::XmlRawRowsBase() :  {  } -void XmlRawRowsBase::loadComplete(const CommonObjects*) -{ -} -  void XmlRawRowsBase::execute(const xmlpp::Document * doc, const RowProcessor * rp) const  {  	XmlRowState rs; diff --git a/project2/xml/xmlRawRows.h b/project2/xml/xmlRawRows.h index a4e7899..81c04a5 100644 --- a/project2/xml/xmlRawRows.h +++ b/project2/xml/xmlRawRows.h @@ -9,8 +9,6 @@ class XmlRawRowsBase : public RowSet {  		XmlRawRowsBase(const xmlpp::Element * p);  		XmlRawRowsBase(); -		void loadComplete(const CommonObjects*); -	  	protected:  		void execute(const xmlpp::Document *, const RowProcessor * rp) const;  }; diff --git a/project2/xml/xmlRows.cpp b/project2/xml/xmlRows.cpp index 71cf06c..d648b10 100644 --- a/project2/xml/xmlRows.cpp +++ b/project2/xml/xmlRows.cpp @@ -52,11 +52,6 @@ XmlRows::~XmlRows()  {  } -void -XmlRows::loadComplete(const CommonObjects *) -{ -} -  static  void  store(const XmlRows::Path & position, RowState::FieldValues & values, const XmlRows::Interests & fields, const xmlChar * val) diff --git a/project2/xml/xmlRows.h b/project2/xml/xmlRows.h index 6e74377..d9971bc 100644 --- a/project2/xml/xmlRows.h +++ b/project2/xml/xmlRows.h @@ -16,7 +16,6 @@ class XmlRows : public RowSet {  		~XmlRows();  		void execute(const Glib::ustring &, const RowProcessor *) const; -		virtual void loadComplete(const CommonObjects *);  		const Variable recordRoot;  		const Variable recordTrigger; diff --git a/project2/xml/xpathRows.cpp b/project2/xml/xpathRows.cpp index 71a2ce2..7dc9c2b 100644 --- a/project2/xml/xpathRows.cpp +++ b/project2/xml/xpathRows.cpp @@ -43,11 +43,6 @@ XPathRows::~XPathRows()  {  } -void -XPathRows::loadComplete(const CommonObjects *) -{ -} -  bool  XPathRows::asHtml() const  { diff --git a/project2/xml/xpathRows.h b/project2/xml/xpathRows.h index 4f1db39..e2c6327 100644 --- a/project2/xml/xpathRows.h +++ b/project2/xml/xpathRows.h @@ -18,7 +18,6 @@ class XPathRows : public RowSet, XmlDocumentCache, VariableCurlHelper {  		~XPathRows();  		void execute(const Glib::ustring &, const RowProcessor *) const; -		virtual void loadComplete(const CommonObjects *);  	private:  		class FilterViewColumn : public Column { | 
