summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-08-03 12:10:57 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-08-03 12:10:57 (GMT)
commit6e1a4a67d5b17e92135cd3f5daf51bf044d76e40 (patch)
tree63d8de9a5ba99dbcd16c6bd867241a7e7466c559 /src/uscxml/plugins
parent37f8735a66aadd0e3f019f5edbb9356cf4a7b974 (diff)
downloaduscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.zip
uscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.tar.gz
uscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.tar.bz2
Got rid of more dynamic_casts
Diffstat (limited to 'src/uscxml/plugins')
-rw-r--r--src/uscxml/plugins/DataModel.h6
-rw-r--r--src/uscxml/plugins/ExecutableContent.h8
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h2
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp2
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.h2
-rw-r--r--src/uscxml/plugins/datamodel/null/NULLDataModel.cpp2
-rw-r--r--src/uscxml/plugins/datamodel/null/NULLDataModel.h2
-rw-r--r--src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp4
-rw-r--r--src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.h2
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp4
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.h2
-rw-r--r--src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp6
-rw-r--r--src/uscxml/plugins/datamodel/xpath/XPathDataModel.h2
-rw-r--r--src/uscxml/plugins/element/fetch/FetchElement.cpp4
-rw-r--r--src/uscxml/plugins/element/fetch/FetchElement.h4
-rw-r--r--src/uscxml/plugins/element/file/FileElement.cpp4
-rw-r--r--src/uscxml/plugins/element/file/FileElement.h4
-rw-r--r--src/uscxml/plugins/element/postpone/PostponeElement.cpp4
-rw-r--r--src/uscxml/plugins/element/postpone/PostponeElement.h4
-rw-r--r--src/uscxml/plugins/element/respond/RespondElement.cpp35
-rw-r--r--src/uscxml/plugins/element/respond/RespondElement.h4
-rw-r--r--src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.cpp43
-rw-r--r--src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.h34
-rw-r--r--src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp11
25 files changed, 101 insertions, 96 deletions
diff --git a/src/uscxml/plugins/DataModel.h b/src/uscxml/plugins/DataModel.h
index 1a4deba..b1eafb9 100644
--- a/src/uscxml/plugins/DataModel.h
+++ b/src/uscxml/plugins/DataModel.h
@@ -61,10 +61,10 @@ public:
virtual std::string evalAsString(const std::string& expr) = 0;
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& scriptNode,
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& scriptNode,
const std::string& expr) = 0;
virtual bool evalAsBool(const std::string& expr) {
- return evalAsBool(Arabica::DOM::Node<std::string>(), expr);
+ return evalAsBool(Arabica::DOM::Element<std::string>(), expr);
}
virtual bool isDeclared(const std::string& expr) = 0;
@@ -150,7 +150,7 @@ public:
virtual bool evalAsBool(const std::string& expr) {
return _impl->evalAsBool(expr);
}
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& scriptNode,
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& scriptNode,
const std::string& expr) {
return _impl->evalAsBool(scriptNode, expr);
}
diff --git a/src/uscxml/plugins/ExecutableContent.h b/src/uscxml/plugins/ExecutableContent.h
index 6f4335b..6916b5f 100644
--- a/src/uscxml/plugins/ExecutableContent.h
+++ b/src/uscxml/plugins/ExecutableContent.h
@@ -44,8 +44,8 @@ public:
virtual std::string getNamespace() {
return "http://www.w3.org/2005/07/scxml"; ///< The namespace of the element.
}
- virtual void enterElement(const Arabica::DOM::Node<std::string>& node) = 0; ///< Invoked when entering the element as part of evaluating executable content.
- virtual void exitElement(const Arabica::DOM::Node<std::string>& node) = 0; ///< Invoked when exiting the element as part of evaluating executable content.
+ virtual void enterElement(const Arabica::DOM::Element<std::string>& node) = 0; ///< Invoked when entering the element as part of evaluating executable content.
+ virtual void exitElement(const Arabica::DOM::Element<std::string>& node) = 0; ///< Invoked when exiting the element as part of evaluating executable content.
virtual bool processChildren() = 0; ///< Whether or not the interpreter should process this elements children.
protected:
@@ -86,10 +86,10 @@ public:
std::string getNamespace() {
return _impl->getNamespace();
}
- void enterElement(const Arabica::DOM::Node<std::string>& node) {
+ void enterElement(const Arabica::DOM::Element<std::string>& node) {
return _impl->enterElement(node);
}
- void exitElement(const Arabica::DOM::Node<std::string>& node) {
+ void exitElement(const Arabica::DOM::Element<std::string>& node) {
return _impl->exitElement(node);
}
bool processChildren() {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index 6d15f72..3a9cb27 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -514,7 +514,7 @@ void JSCDataModel::eval(const Element<std::string>& scriptElem,
evalAsValue(expr);
}
-bool JSCDataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
+bool JSCDataModel::evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr) {
JSValueRef result = evalAsValue(expr);
return JSValueToBoolean(_ctx, result);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h
index fea2234..6792130 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h
@@ -66,7 +66,7 @@ public:
const std::string& expr);
virtual std::string evalAsString(const std::string& expr);
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr);
virtual bool isDeclared(const std::string& expr);
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
index bf8b538..a36a5f7 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
@@ -435,7 +435,7 @@ void LuaDataModel::init(const std::string& location, const Data& data) {
* The predicate must return 'true' if and only if that state is in the current
* state configuration.
*/
-bool LuaDataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
+bool LuaDataModel::evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr) {
// we need the result of the expression on the lua stack -> has to "return"!
std::string trimmedExpr = boost::trim_copy(expr);
if (!boost::starts_with(trimmedExpr, "return")) {
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
index 86e7e17..69b8d57 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
@@ -83,7 +83,7 @@ public:
virtual void eval(const Arabica::DOM::Element<std::string>& scriptElem,
const std::string& expr);
virtual std::string evalAsString(const std::string& expr);
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr);
virtual std::string andExpressions(std::list<std::string>);
diff --git a/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp b/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp
index d86bdb2..ae75c88 100644
--- a/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp
@@ -104,7 +104,7 @@ bool NULLDataModel::isDeclared(const std::string& expr) {
* The predicate must return 'true' if and only if that state is in the current
* state configuration.
*/
-bool NULLDataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
+bool NULLDataModel::evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr) {
std::string trimmedExpr = expr;
boost::trim(trimmedExpr);
if (!boost::istarts_with(trimmedExpr, "in"))
diff --git a/src/uscxml/plugins/datamodel/null/NULLDataModel.h b/src/uscxml/plugins/datamodel/null/NULLDataModel.h
index 2870388..da0374e 100644
--- a/src/uscxml/plugins/datamodel/null/NULLDataModel.h
+++ b/src/uscxml/plugins/datamodel/null/NULLDataModel.h
@@ -77,7 +77,7 @@ public:
virtual void eval(const Arabica::DOM::Element<std::string>& scriptElem,
const std::string& expr);
virtual std::string evalAsString(const std::string& expr);
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr);
protected:
diff --git a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp
index 924e14a..f6131f8 100644
--- a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp
@@ -676,10 +676,10 @@ void SWIDataModel::eval(const Element<std::string>& scriptElem, const std::strin
}
bool SWIDataModel::evalAsBool(const std::string& expr) {
- return evalAsBool(Arabica::DOM::Node<std::string>(), expr);
+ return evalAsBool(Arabica::DOM::Element<std::string>(), expr);
}
-bool SWIDataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
+bool SWIDataModel::evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr) {
SWIEngineLock engineLock;
try {
PlCompound compound(expr.c_str());
diff --git a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.h b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.h
index a673a40..1bf7b6a 100644
--- a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.h
+++ b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.h
@@ -97,7 +97,7 @@ public:
virtual Data getStringAsData(const std::string& content);
virtual std::string evalAsString(const std::string& expr);
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr);
virtual bool evalAsBool(const std::string& expr);
static foreign_t inPredicate(term_t a0, int arity, void* context);
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
index 6d34677..f83d0c8 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
@@ -141,10 +141,10 @@ void PromelaDataModel::eval(const Element<std::string>& scriptElem, const std::s
}
bool PromelaDataModel::evalAsBool(const std::string& expr) {
- return evalAsBool(Arabica::DOM::Node<std::string>(), expr);
+ return evalAsBool(Arabica::DOM::Element<std::string>(), expr);
}
-bool PromelaDataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
+bool PromelaDataModel::evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr) {
PromelaParser parser(expr, PromelaParser::PROMELA_EXPR);
// parser.dump();
return evaluateExpr(parser.ast) > 0;
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
index ca6b19d..89078bd 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
@@ -78,7 +78,7 @@ public:
virtual Data getStringAsData(const std::string& content);
virtual std::string evalAsString(const std::string& expr);
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr);
virtual bool evalAsBool(const std::string& expr);
virtual std::string andExpressions(std::list<std::string> expressions);
diff --git a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
index 41e015e..06461aa 100644
--- a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
@@ -229,7 +229,7 @@ void XPathDataModel::setEvent(const Event& event) {
Node<std::string> oldEventElem = _datamodel.getFirstChild();
while(oldEventElem) {
if (oldEventElem.getNodeType() == Node_base::ELEMENT_NODE) {
- if (HAS_ATTR(oldEventElem, "id") && iequals(ATTR(oldEventElem, "id"), "_event"))
+ if (HAS_ATTR_CAST(oldEventElem, "id") && iequals(ATTR_CAST(oldEventElem, "id"), "_event"))
break;
}
oldEventElem = oldEventElem.getNextSibling();
@@ -393,10 +393,10 @@ bool XPathDataModel::isDeclared(const std::string& expr) {
}
bool XPathDataModel::evalAsBool(const std::string& expr) {
- return evalAsBool(Arabica::DOM::Node<std::string>(), expr);
+ return evalAsBool(Arabica::DOM::Element<std::string>(), expr);
}
-bool XPathDataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
+bool XPathDataModel::evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr) {
// std::cout << std::endl << evalAsString(expr);
XPathValue<std::string> result;
try {
diff --git a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.h b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.h
index 09d63fa..fe454b3 100644
--- a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.h
+++ b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.h
@@ -123,7 +123,7 @@ public:
virtual std::string evalAsString(const std::string& expr);
virtual bool evalAsBool(const std::string& expr);
- virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Element<std::string>& node, const std::string& expr);
virtual double evalAsNumber(const std::string& expr);
protected:
diff --git a/src/uscxml/plugins/element/fetch/FetchElement.cpp b/src/uscxml/plugins/element/fetch/FetchElement.cpp
index b40f487..9f97ca9 100644
--- a/src/uscxml/plugins/element/fetch/FetchElement.cpp
+++ b/src/uscxml/plugins/element/fetch/FetchElement.cpp
@@ -80,7 +80,7 @@ void FetchElement::downloadFailed(const URL& url, int errorCode) {
}
-void FetchElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
+void FetchElement::enterElement(const Arabica::DOM::Element<std::string>& node) {
if (!HAS_ATTR(node, "target") && !HAS_ATTR(node, "targetexpr")) {
LOG(ERROR) << "Fetch element requires target or targetexpr";
return;
@@ -123,7 +123,7 @@ void FetchElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
}
-void FetchElement::exitElement(const Arabica::DOM::Node<std::string>& node) {
+void FetchElement::exitElement(const Arabica::DOM::Element<std::string>& node) {
}
diff --git a/src/uscxml/plugins/element/fetch/FetchElement.h b/src/uscxml/plugins/element/fetch/FetchElement.h
index 433f3f5..e3e5008 100644
--- a/src/uscxml/plugins/element/fetch/FetchElement.h
+++ b/src/uscxml/plugins/element/fetch/FetchElement.h
@@ -46,8 +46,8 @@ public:
return false;
}
- void enterElement(const Arabica::DOM::Node<std::string>& node);
- void exitElement(const Arabica::DOM::Node<std::string>& node);
+ void enterElement(const Arabica::DOM::Element<std::string>& node);
+ void exitElement(const Arabica::DOM::Element<std::string>& node);
void downloadCompleted(const URL& url);
void downloadFailed(const URL& url, int errorCode);
diff --git a/src/uscxml/plugins/element/file/FileElement.cpp b/src/uscxml/plugins/element/file/FileElement.cpp
index 247c3c8..decd5ca 100644
--- a/src/uscxml/plugins/element/file/FileElement.cpp
+++ b/src/uscxml/plugins/element/file/FileElement.cpp
@@ -48,7 +48,7 @@ boost::shared_ptr<ExecutableContentImpl> FileElement::create(InterpreterImpl* in
FileElement::~FileElement() {
}
-void FileElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
+void FileElement::enterElement(const Arabica::DOM::Element<std::string>& node) {
if (!HAS_ATTR(node, "url") && !HAS_ATTR(node, "urlexpr")) {
LOG(ERROR) << "File element requires url or urlexpr";
return;
@@ -251,7 +251,7 @@ void FileElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
}
-void FileElement::exitElement(const Arabica::DOM::Node<std::string>& node) {
+void FileElement::exitElement(const Arabica::DOM::Element<std::string>& node) {
}
diff --git a/src/uscxml/plugins/element/file/FileElement.h b/src/uscxml/plugins/element/file/FileElement.h
index e236918..b1b3426 100644
--- a/src/uscxml/plugins/element/file/FileElement.h
+++ b/src/uscxml/plugins/element/file/FileElement.h
@@ -62,8 +62,8 @@ public:
return false;
}
- void enterElement(const Arabica::DOM::Node<std::string>& node);
- void exitElement(const Arabica::DOM::Node<std::string>& node);
+ void enterElement(const Arabica::DOM::Element<std::string>& node);
+ void exitElement(const Arabica::DOM::Element<std::string>& node);
protected:
diff --git a/src/uscxml/plugins/element/postpone/PostponeElement.cpp b/src/uscxml/plugins/element/postpone/PostponeElement.cpp
index 7a18b38..a041a9e 100644
--- a/src/uscxml/plugins/element/postpone/PostponeElement.cpp
+++ b/src/uscxml/plugins/element/postpone/PostponeElement.cpp
@@ -44,7 +44,7 @@ boost::shared_ptr<ExecutableContentImpl> PostponeElement::create(InterpreterImpl
return invoker;
}
-void PostponeElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
+void PostponeElement::enterElement(const Arabica::DOM::Element<std::string>& node) {
if (!_interpreter->getDataModel()) {
LOG(ERROR) << "Postpone element requires a datamodel";
return;
@@ -116,7 +116,7 @@ void PostponeElement::enterElement(const Arabica::DOM::Node<std::string>& node)
Resubmitter::postpone(currEvent, until, 0, chained, _interpreter);
}
-void PostponeElement::exitElement(const Arabica::DOM::Node<std::string>& node) {
+void PostponeElement::exitElement(const Arabica::DOM::Element<std::string>& node) {
}
void PostponeElement::Resubmitter::postpone(const Event& event, std::string until, uint64_t timeout, bool chained, InterpreterImpl* interpreter) {
diff --git a/src/uscxml/plugins/element/postpone/PostponeElement.h b/src/uscxml/plugins/element/postpone/PostponeElement.h
index 56464e2..9840c75 100644
--- a/src/uscxml/plugins/element/postpone/PostponeElement.h
+++ b/src/uscxml/plugins/element/postpone/PostponeElement.h
@@ -56,8 +56,8 @@ public:
return false;
}
- void enterElement(const Arabica::DOM::Node<std::string>& node);
- void exitElement(const Arabica::DOM::Node<std::string>& node);
+ void enterElement(const Arabica::DOM::Element<std::string>& node);
+ void exitElement(const Arabica::DOM::Element<std::string>& node);
protected:
// once per interpreter
diff --git a/src/uscxml/plugins/element/respond/RespondElement.cpp b/src/uscxml/plugins/element/respond/RespondElement.cpp
index 6445249..a62f934 100644
--- a/src/uscxml/plugins/element/respond/RespondElement.cpp
+++ b/src/uscxml/plugins/element/respond/RespondElement.cpp
@@ -43,7 +43,7 @@ boost::shared_ptr<ExecutableContentImpl> RespondElement::create(InterpreterImpl*
return invoker;
}
-void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
+void RespondElement::enterElement(const Arabica::DOM::Element<std::string>& node) {
// try to get the request id
if (!HAS_ATTR(node, "to")) {
LOG(ERROR) << "Respond element requires to attribute";
@@ -81,10 +81,11 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
// extract the content
Arabica::XPath::NodeSet<std::string> contents = InterpreterImpl::filterChildElements(_interpreter->getNameSpaceInfo().getXMLPrefixForNS(getNamespace()) + "content", node);
if (contents.size() > 0) {
- if (HAS_ATTR(contents[0], "expr")) { // -- content is evaluated string from datamodel ------
+ Arabica::DOM::Element<std::string> contentElem = Arabica::DOM::Element<std::string>(contents[0]);
+ if (HAS_ATTR(contentElem, "expr")) { // -- content is evaluated string from datamodel ------
if (_interpreter->getDataModel()) {
try {
- Data contentData = _interpreter->getDataModel().getStringAsData(ATTR(contents[0], "expr"));
+ Data contentData = _interpreter->getDataModel().getStringAsData(ATTR(contentElem, "expr"));
if (contentData.atom.length() > 0) {
httpReply.content = contentData.atom;
httpReply.headers["Content-Type"] = "text/plain";
@@ -108,19 +109,19 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
LOG(ERROR) << "content element has expr attribute but no datamodel is specified.";
return;
}
- } else if (HAS_ATTR(contents[0], "file") || HAS_ATTR(contents[0], "fileexpr")) { // -- content is from file ------
+ } else if (HAS_ATTR(contentElem, "file") || HAS_ATTR(contentElem, "fileexpr")) { // -- content is from file ------
URL file;
- if (HAS_ATTR(contents[0], "fileexpr")) {
+ if (HAS_ATTR(contentElem, "fileexpr")) {
if (_interpreter->getDataModel()) {
try {
- file = "file://" + _interpreter->getDataModel().evalAsString(ATTR(contents[0], "fileexpr"));
+ file = "file://" + _interpreter->getDataModel().evalAsString(ATTR(contentElem, "fileexpr"));
} catch (Event e) {
LOG(ERROR) << "Syntax error with fileexpr in content child of Respond element:" << std::endl << e << std::endl;
return;
}
}
} else {
- file = "file://" + ATTR(contents[0], "fileexpr");
+ file = "file://" + ATTR(contentElem, "fileexpr");
}
if (file) {
httpReply.content = file.getInContent();
@@ -144,13 +145,15 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
// process headers
Arabica::XPath::NodeSet<std::string> headers = InterpreterImpl::filterChildElements(_interpreter->getNameSpaceInfo().getXMLPrefixForNS(getNamespace()) + "header", node);
for (int i = 0; i < headers.size(); i++) {
+ Arabica::DOM::Element<std::string> headerElem = Arabica::DOM::Element<std::string>(headers[i]);
+
std::string name;
- if (HAS_ATTR(headers[i], "name")) {
- name = ATTR(headers[i], "name");
- } else if(HAS_ATTR(headers[i], "nameexpr")) {
+ if (HAS_ATTR(headerElem, "name")) {
+ name = ATTR(headerElem, "name");
+ } else if(HAS_ATTR(headerElem, "nameexpr")) {
if (_interpreter->getDataModel()) {
try {
- name = _interpreter->getDataModel().evalAsString(ATTR(headers[i], "nameexpr"));
+ name = _interpreter->getDataModel().evalAsString(ATTR(headerElem, "nameexpr"));
} catch (Event e) {
LOG(ERROR) << "Syntax error with nameexpr in header child of Respond element:" << std::endl << e << std::endl;
return;
@@ -165,12 +168,12 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
}
std::string value;
- if (HAS_ATTR(headers[i], "value")) {
- value = ATTR(headers[i], "value");
- } else if(HAS_ATTR(headers[i], "valueexpr")) {
+ if (HAS_ATTR(headerElem, "value")) {
+ value = ATTR(headerElem, "value");
+ } else if(HAS_ATTR(headerElem, "valueexpr")) {
if (_interpreter->getDataModel()) {
try {
- value = _interpreter->getDataModel().evalAsString(ATTR(headers[i], "valueexpr"));
+ value = _interpreter->getDataModel().evalAsString(ATTR(headerElem, "valueexpr"));
} catch (Event e) {
LOG(ERROR) << "Syntax error with valueexpr in header child of Respond element:" << std::endl << e << std::endl;
return;
@@ -192,7 +195,7 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) {
servlet->getRequests().erase(requestId);
}
-void RespondElement::exitElement(const Arabica::DOM::Node<std::string>& node) {
+void RespondElement::exitElement(const Arabica::DOM::Element<std::string>& node) {
}
diff --git a/src/uscxml/plugins/element/respond/RespondElement.h b/src/uscxml/plugins/element/respond/RespondElement.h
index 71b7fec..2e8cec7 100644
--- a/src/uscxml/plugins/element/respond/RespondElement.h
+++ b/src/uscxml/plugins/element/respond/RespondElement.h
@@ -46,8 +46,8 @@ public:
return false;
}
- void enterElement(const Arabica::DOM::Node<std::string>& node);
- void exitElement(const Arabica::DOM::Node<std::string>& node);
+ void enterElement(const Arabica::DOM::Element<std::string>& node);
+ void exitElement(const Arabica::DOM::Element<std::string>& node);
};
diff --git a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.cpp b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.cpp
index 9e435d2..dac4f99 100644
--- a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.cpp
+++ b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.cpp
@@ -66,9 +66,9 @@ bool pluginConnect(pluma::Host& host) {
#endif
#define OSG_TAG_HANDLE(tagName, procFunc) \
-} else if (iequals(LOCALNAME(childs.item(i)), tagName) && \
+} else if (iequals(LOCALNAME(childElem), tagName) && \
validChildren.find(tagName) != validChildren.end()) { \
- procFunc(childs.item(i));\
+ procFunc(childElem);\
OSGInvoker::OSGInvoker() {
@@ -167,7 +167,7 @@ void OSGInvoker::handleEvent(Arabica::DOM::Events::Event<std::string>& event) {
}
}
-void OSGInvoker::processDisplay(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processDisplay(const Arabica::DOM::Element<std::string>& element) {
// std::cout << element << std::endl;
if (_displays.find(element) == _displays.end()) {
@@ -188,7 +188,7 @@ void OSGInvoker::processDisplay(const Arabica::DOM::Node<std::string>& element)
}
}
-void OSGInvoker::processViewport(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processViewport(const Arabica::DOM::Element<std::string>& element) {
if (_displays.find(element.getParentNode()) == _displays.end())
return;
@@ -236,7 +236,7 @@ void OSGInvoker::processViewport(const Arabica::DOM::Node<std::string>& element)
void OSGInvoker::processCamera(const Arabica::DOM::Node<std::string>& element) {}
void OSGInvoker::updateCamera(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event) {}
-void OSGInvoker::processTranslation(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processTranslation(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> node = _nodes[element.getParentNode()];
@@ -269,7 +269,7 @@ void OSGInvoker::processTranslation(const Arabica::DOM::Node<std::string>& eleme
processChildren(validChilds, element);
}
-void OSGInvoker::processRotation(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processRotation(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> node = _nodes[element.getParentNode()];
@@ -296,12 +296,12 @@ void OSGInvoker::updateRotation(osg::ref_ptr<osg::Node> node, Arabica::DOM::Even
osg::ref_ptr<osg::MatrixTransform> transform = static_cast<osg::MatrixTransform*>(node->asTransform());
if (false) {
} else if (iequals(event.getType(), "DOMAttrModified")) {
- osg::Matrix rotation = rotationFromElement(Arabica::DOM::Node<std::string>(event.getTarget()));
+ osg::Matrix rotation = rotationFromElement(Arabica::DOM::Element<std::string>(Arabica::DOM::Node<std::string>(event.getTarget())));
transform->setMatrix(rotation);
}
}
-osg::Matrix OSGInvoker::rotationFromElement(const Arabica::DOM::Node<std::string>& element) {
+osg::Matrix OSGInvoker::rotationFromElement(const Arabica::DOM::Element<std::string>& element) {
double pitch = 0, roll = 0, yaw = 0;
if (HAS_ATTR(element, "pitch")) {
NumAttr pitchAttr = NumAttr(ATTR(element, "pitch"));
@@ -342,7 +342,7 @@ osg::Matrix OSGInvoker::rotationFromElement(const Arabica::DOM::Node<std::string
return rotation;
}
-void OSGInvoker::processScale(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processScale(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> node = _nodes[element.getParentNode()];
@@ -375,7 +375,7 @@ void OSGInvoker::processScale(const Arabica::DOM::Node<std::string>& element) {
processChildren(validChilds, element);
}
-void OSGInvoker::processNode(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processNode(const Arabica::DOM::Element<std::string>& element) {
_nodes_t::iterator nodeIter = _nodes.find(element.getParentNode());
assert(nodeIter != _nodes.end());
@@ -407,7 +407,7 @@ void OSGInvoker::processNode(const Arabica::DOM::Node<std::string>& element) {
}
}
-void OSGInvoker::processSphere(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processSphere(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> parent = _nodes[element.getParentNode()];
@@ -434,7 +434,7 @@ void OSGInvoker::processSphere(const Arabica::DOM::Node<std::string>& element) {
void OSGInvoker::updateSphere(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event) {
}
-void OSGInvoker::processBox(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processBox(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> parent = _nodes[element.getParentNode()];
@@ -462,7 +462,7 @@ void OSGInvoker::processBox(const Arabica::DOM::Node<std::string>& element) {
}
void OSGInvoker::updateBox(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event) {
}
-void OSGInvoker::processCapsule(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processCapsule(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> parent = _nodes[element.getParentNode()];
@@ -487,7 +487,7 @@ void OSGInvoker::processCapsule(const Arabica::DOM::Node<std::string>& element)
void OSGInvoker::updateCapsule(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event) {
}
-void OSGInvoker::processCone(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processCone(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> parent = _nodes[element.getParentNode()];
@@ -514,7 +514,7 @@ void OSGInvoker::processCone(const Arabica::DOM::Node<std::string>& element) {
void OSGInvoker::updateCone(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event) {
}
-void OSGInvoker::processCylinder(const Arabica::DOM::Node<std::string>& element) {
+void OSGInvoker::processCylinder(const Arabica::DOM::Element<std::string>& element) {
assert(_nodes.find(element.getParentNode()) != _nodes.end());
osg::ref_ptr<osg::Node> parent = _nodes[element.getParentNode()];
@@ -541,7 +541,7 @@ void OSGInvoker::processCylinder(const Arabica::DOM::Node<std::string>& element)
void OSGInvoker::updateCylinder(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event) {
}
-osg::Vec4 OSGInvoker::getColor(const Arabica::DOM::Node<std::string>& element, const std::string& attr, bool& valid) {
+osg::Vec4 OSGInvoker::getColor(const Arabica::DOM::Element<std::string>& element, const std::string& attr, bool& valid) {
if (HAS_ATTR(element, attr)) {
std::string color = ATTR(element, attr);
@@ -576,7 +576,7 @@ osg::Vec4 OSGInvoker::getColor(const Arabica::DOM::Node<std::string>& element, c
return osg::Vec4();
}
-osg::ref_ptr<osg::Material> OSGInvoker::getMaterial(const Arabica::DOM::Node<std::string>& element) {
+osg::ref_ptr<osg::Material> OSGInvoker::getMaterial(const Arabica::DOM::Element<std::string>& element) {
osg::ref_ptr<osg::Material> nodeMat;
@@ -630,6 +630,7 @@ void OSGInvoker::processChildren(const std::set<std::string>& validChildren, con
for (int i = 0; i < childs.getLength(); ++i) {
if (childs.item(i).getNodeType() != Arabica::DOM::Node_base::ELEMENT_NODE)
continue;
+ Arabica::DOM::Element<std::string> childElem = Arabica::DOM::Element<std::string>(childs.item(i));
if (false) {
OSG_TAG_HANDLE("node", processNode);
OSG_TAG_HANDLE("translation", processTranslation);
@@ -644,12 +645,12 @@ void OSGInvoker::processChildren(const std::set<std::string>& validChildren, con
OSG_TAG_HANDLE("capsule", processCapsule);
OSG_TAG_HANDLE("cylinder", processCylinder);
} else {
- LOG(INFO) << "Unknown XML element " << TAGNAME(childs.item(i));
+ LOG(INFO) << "Unknown XML element " << TAGNAME(childElem);
}
}
}
-void OSGInvoker::getViewport(const Arabica::DOM::Node<std::string>& element,
+void OSGInvoker::getViewport(const Arabica::DOM::Element<std::string>& element,
unsigned int& x,
unsigned int& y,
unsigned int& width,
@@ -659,7 +660,7 @@ void OSGInvoker::getViewport(const Arabica::DOM::Node<std::string>& element,
}
-void OSGInvoker::getViewport(const Arabica::DOM::Node<std::string>& element,
+void OSGInvoker::getViewport(const Arabica::DOM::Element<std::string>& element,
unsigned int& x,
unsigned int& y,
unsigned int& width,
@@ -674,7 +675,7 @@ void OSGInvoker::getViewport(const Arabica::DOM::Node<std::string>& element,
getViewport(element, x, y, width, height, fullWidth, fullHeight);
}
-void OSGInvoker::getViewport(const Arabica::DOM::Node<std::string>& element,
+void OSGInvoker::getViewport(const Arabica::DOM::Element<std::string>& element,
unsigned int& x,
unsigned int& y,
unsigned int& width,
diff --git a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.h b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.h
index af06e23..30be8ca 100644
--- a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.h
+++ b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGInvoker.h
@@ -61,58 +61,58 @@ public:
virtual void runOnMainThread();
protected:
- void processDisplay(const Arabica::DOM::Node<std::string>& element);
+ void processDisplay(const Arabica::DOM::Element<std::string>& element);
void updateDisplay(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processViewport(const Arabica::DOM::Node<std::string>& element);
+ void processViewport(const Arabica::DOM::Element<std::string>& element);
void updateViewport(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
void processCamera(const Arabica::DOM::Node<std::string>& element);
void updateCamera(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processTranslation(const Arabica::DOM::Node<std::string>& element);
+ void processTranslation(const Arabica::DOM::Element<std::string>& element);
void updateTranslation(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processRotation(const Arabica::DOM::Node<std::string>& element);
+ void processRotation(const Arabica::DOM::Element<std::string>& element);
void updateRotation(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- static osg::Matrix rotationFromElement(const Arabica::DOM::Node<std::string>& element);
+ static osg::Matrix rotationFromElement(const Arabica::DOM::Element<std::string>& element);
- void processScale(const Arabica::DOM::Node<std::string>& element);
+ void processScale(const Arabica::DOM::Element<std::string>& element);
void updateScale(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processNode(const Arabica::DOM::Node<std::string>& element);
+ void processNode(const Arabica::DOM::Element<std::string>& element);
void updateNode(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processSphere(const Arabica::DOM::Node<std::string>& element);
+ void processSphere(const Arabica::DOM::Element<std::string>& element);
void updateSphere(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processBox(const Arabica::DOM::Node<std::string>& element);
+ void processBox(const Arabica::DOM::Element<std::string>& element);
void updateBox(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processCapsule(const Arabica::DOM::Node<std::string>& element);
+ void processCapsule(const Arabica::DOM::Element<std::string>& element);
void updateCapsule(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processCone(const Arabica::DOM::Node<std::string>& element);
+ void processCone(const Arabica::DOM::Element<std::string>& element);
void updateCone(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- void processCylinder(const Arabica::DOM::Node<std::string>& element);
+ void processCylinder(const Arabica::DOM::Element<std::string>& element);
void updateCylinder(osg::ref_ptr<osg::Node> node, Arabica::DOM::Events::Event<std::string>& event);
- osg::Vec4 getColor(const Arabica::DOM::Node<std::string>& element, const std::string& attr, bool& valid);
- osg::ref_ptr<osg::Material> getMaterial(const Arabica::DOM::Node<std::string>& element);
+ osg::Vec4 getColor(const Arabica::DOM::Element<std::string>& element, const std::string& attr, bool& valid);
+ osg::ref_ptr<osg::Material> getMaterial(const Arabica::DOM::Element<std::string>& element);
osg::Vec4 parseVec4(const std::string& coeffs, int& number);
void processChildren(const std::set<std::string>& validChildren, const Arabica::DOM::Node<std::string>& element);
- void getViewport(const Arabica::DOM::Node<std::string>& element,
+ void getViewport(const Arabica::DOM::Element<std::string>& element,
unsigned int& x,
unsigned int& y,
unsigned int& width,
unsigned int& height,
int& screenId);
- void getViewport(const Arabica::DOM::Node<std::string>& element,
+ void getViewport(const Arabica::DOM::Element<std::string>& element,
unsigned int& x,
unsigned int& y,
unsigned int& width,
unsigned int& height,
CompositeDisplay* display);
- void getViewport(const Arabica::DOM::Node<std::string>& element,
+ void getViewport(const Arabica::DOM::Element<std::string>& element,
unsigned int& x,
unsigned int& y,
unsigned int& width,
diff --git a/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp b/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp
index 5b67f7c..285db72 100644
--- a/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp
+++ b/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp
@@ -186,11 +186,12 @@ void XHTMLInvoker::reply(const SendRequest& req, const HTTPServer::Request& long
std::stringstream ss;
// Arabica::DOM::Node<std::string> content = req.dom.getDocumentElement();
Arabica::DOM::Node<std::string> content = req.dom;
- if (content && iequals(content.getLocalName(), "content")) {
- reply.headers["X-SCXML-Type"] = (HAS_ATTR(content, "type") ? ATTR(content, "type") : "replacechildren");
- reply.headers["X-SCXML-XPath"] = (HAS_ATTR(content, "xpath") ? ATTR(content, "xpath") : "/html/body");
- if (HAS_ATTR(content, "attr"))
- reply.headers["X-SCXML-Attr"] = ATTR(content, "attr");
+ if (content && content.getNodeType() == Arabica::DOM::Node_base::ELEMENT_NODE && iequals(content.getLocalName(), "content")) {
+ Arabica::DOM::Element<std::string> contentElem = Arabica::DOM::Element<std::string>(content);
+ reply.headers["X-SCXML-Type"] = (HAS_ATTR(contentElem, "type") ? ATTR(contentElem, "type") : "replacechildren");
+ reply.headers["X-SCXML-XPath"] = (HAS_ATTR(contentElem, "xpath") ? ATTR(contentElem, "xpath") : "/html/body");
+ if (HAS_ATTR(contentElem, "attr"))
+ reply.headers["X-SCXML-Attr"] = ATTR(contentElem, "attr");
}
// ss << req.getFirstDOMElement();
ss << req.dom;