summaryrefslogtreecommitdiffstats
path: root/src/uscxml/Interpreter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/Interpreter.cpp')
-rw-r--r--src/uscxml/Interpreter.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/uscxml/Interpreter.cpp b/src/uscxml/Interpreter.cpp
index 77c6805..b6266e2 100644
--- a/src/uscxml/Interpreter.cpp
+++ b/src/uscxml/Interpreter.cpp
@@ -709,6 +709,13 @@ void InterpreterImpl::send(const Arabica::DOM::Node<std::string>& element) {
return;
}
+ if (sendReq.dom) {
+ std::stringstream ss;
+ ss << sendReq.dom;
+ sendReq.xml = ss.str();
+ _dataModel.replaceExpressions(sendReq.xml);
+ }
+
assert(_sendIds.find(sendReq.sendid) == _sendIds.end());
_sendIds[sendReq.sendid] = std::make_pair(this, sendReq);
if (sendReq.delayMs > 0) {
@@ -839,6 +846,13 @@ void InterpreterImpl::invoke(const Arabica::DOM::Node<std::string>& element) {
return;
}
+ if (invokeReq.dom) {
+ std::stringstream ss;
+ ss << invokeReq.dom;
+ invokeReq.xml = ss.str();
+ _dataModel.replaceExpressions(invokeReq.xml);
+ }
+
// test 422
if (invokeReq.type.size() == 0)
invokeReq.type = "http://www.w3.org/TR/scxml/";
@@ -1330,11 +1344,11 @@ Arabica::XPath::NodeSet<std::string> InterpreterImpl::getStates(const std::vecto
Arabica::DOM::Node<std::string> InterpreterImpl::getState(const std::string& stateId) {
- if (_cachedStates.find(stateId) != _cachedStates.end() && false) {
+ if (_cachedStates.find(stateId) != _cachedStates.end()) {
return _cachedStates[stateId];
}
- // first try atomic and compund states
+ // first try atomic and compound states
NodeSet<std::string> target = _xpath.evaluate("//" + _xpathPrefix + "state[@id='" + stateId + "']", _scxml).asNodeSet();
if (target.size() > 0)
goto FOUND;