diff options
author | Stefan Radomski <sradomski@mintwerk.de> | 2015-07-08 20:03:03 (GMT) |
---|---|---|
committer | Stefan Radomski <sradomski@mintwerk.de> | 2015-07-08 20:03:03 (GMT) |
commit | 57ba362eae6e8209cf560555fd4cc4bb76dbe2a1 (patch) | |
tree | 00a2e2c5fd6993a5ee118df147cae3ef6e9cca9a /src/uscxml/transform | |
parent | f02d7e5919f16d8396839fcff1e0588d6ccf3004 (diff) | |
download | uscxml-57ba362eae6e8209cf560555fd4cc4bb76dbe2a1.zip uscxml-57ba362eae6e8209cf560555fd4cc4bb76dbe2a1.tar.gz uscxml-57ba362eae6e8209cf560555fd4cc4bb76dbe2a1.tar.bz2 |
done.event bug and prolog tests
Fixed the done.event bug and added first prolog transformed IRP tests
Diffstat (limited to 'src/uscxml/transform')
-rw-r--r-- | src/uscxml/transform/ChartToFSM.cpp | 35 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToFSM.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToFlatSCXML.h | 4 |
3 files changed, 21 insertions, 20 deletions
diff --git a/src/uscxml/transform/ChartToFSM.cpp b/src/uscxml/transform/ChartToFSM.cpp index ef59d84..fd7491c 100644 --- a/src/uscxml/transform/ChartToFSM.cpp +++ b/src/uscxml/transform/ChartToFSM.cpp @@ -412,12 +412,12 @@ void ChartToFSM::cancelInvoke(const Arabica::DOM::Element<std::string>& element) _currGlobalTransition->hasExecutableContent = true; } -void ChartToFSM::internalDoneSend(const Arabica::DOM::Element<std::string>& state) { +void ChartToFSM::internalDoneSend(const Arabica::DOM::Element<std::string>& state, const Arabica::DOM::Element<std::string>& doneData) { if (!isState(state)) return; - if (parentIsScxmlState(state)) - return; +// if (parentIsScxmlState(state)) +// return; // return; // std::cerr << "internalDoneSend: " << state << std::endl; @@ -431,22 +431,21 @@ void ChartToFSM::internalDoneSend(const Arabica::DOM::Element<std::string>& stat onentry.appendChild(raise); - Arabica::XPath::NodeSet<std::string> doneDatas = filterChildElements(_nsInfo.xmlNSPrefix + "donedata", state); - if (doneDatas.size() > 0) { - Arabica::DOM::Node<std::string> doneData = doneDatas[0]; - Arabica::XPath::NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", doneDatas[0]); - if (contents.size() > 0) { - Node<std::string> imported = _flatDoc.importNode(contents[0], true); - raise.appendChild(imported); - } - Arabica::XPath::NodeSet<std::string> params = filterChildElements(_nsInfo.xmlNSPrefix + "param", doneDatas[0]); - if (params.size() > 0) { - Node<std::string> imported = _flatDoc.importNode(params[0], true); - raise.appendChild(imported); - } - } + if (doneData) { + Arabica::XPath::NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", doneData); + if (contents.size() > 0) { + Node<std::string> imported = _flatDoc.importNode(contents[0], true); + raise.appendChild(imported); + } + Arabica::XPath::NodeSet<std::string> params = filterChildElements(_nsInfo.xmlNSPrefix + "param", doneData); + if (params.size() > 0) { + Node<std::string> imported = _flatDoc.importNode(params[0], true); + raise.appendChild(imported); + } + } + - raise.setAttribute("event", "done.state." + ATTR_CAST(state.getParentNode(), "id")); // parent?! + raise.setAttribute("event", "done.state." + ATTR_CAST(state, "id")); // parent?! GlobalTransition::Action action; action.raiseDone = onentry; // HERE! diff --git a/src/uscxml/transform/ChartToFSM.h b/src/uscxml/transform/ChartToFSM.h index 9d1ed97..64d1a0c 100644 --- a/src/uscxml/transform/ChartToFSM.h +++ b/src/uscxml/transform/ChartToFSM.h @@ -276,7 +276,7 @@ private: // override to do nothing void send(const Arabica::DOM::Element<std::string>& element) {} - void internalDoneSend(const Arabica::DOM::Element<std::string>& state); + void internalDoneSend(const Arabica::DOM::Element<std::string>& state, const Arabica::DOM::Element<std::string>& doneData); // InterpreterMonitor virtual void beforeMicroStep(Interpreter interpreter); diff --git a/src/uscxml/transform/ChartToFlatSCXML.h b/src/uscxml/transform/ChartToFlatSCXML.h index f611a7c..7afe3c5 100644 --- a/src/uscxml/transform/ChartToFlatSCXML.h +++ b/src/uscxml/transform/ChartToFlatSCXML.h @@ -33,7 +33,9 @@ public: operator Interpreter(); Arabica::DOM::Document<std::string> getDocument() const { - return _flatDoc; + if (_flatDoc) + return _flatDoc; + return _document; } protected: |