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/ChartToFSM.cpp | |
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/ChartToFSM.cpp')
-rw-r--r-- | src/uscxml/transform/ChartToFSM.cpp | 35 |
1 files changed, 17 insertions, 18 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! |