diff options
author | Stefan Radomski <sradomski@mintwerk.de> | 2016-02-23 11:28:18 (GMT) |
---|---|---|
committer | Stefan Radomski <sradomski@mintwerk.de> | 2016-02-23 11:28:18 (GMT) |
commit | 7212d5a3dbbd2845d09df96b2c345132c8a24931 (patch) | |
tree | 194bf3525bc7b607013301b79dde6c9950ccbf2e /src/uscxml/transform | |
parent | 8e62f3801b98bf4b7f7f85b848b2fe6339c99162 (diff) | |
download | uscxml-7212d5a3dbbd2845d09df96b2c345132c8a24931.zip uscxml-7212d5a3dbbd2845d09df96b2c345132c8a24931.tar.gz uscxml-7212d5a3dbbd2845d09df96b2c345132c8a24931.tar.bz2 |
Some refactoring for improved compile times
Diffstat (limited to 'src/uscxml/transform')
-rw-r--r-- | src/uscxml/transform/ChartAnnotator.cpp | 24 | ||||
-rw-r--r-- | src/uscxml/transform/ChartAnnotator.h | 27 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToC.cpp | 209 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToC.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToFSM.cpp | 59 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToFSM.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToFlatSCXML.cpp | 16 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToMinimalSCXML.cpp | 10 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToMinimalSCXML.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToPromela.cpp | 119 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToPromela.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToTex.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToVHDL.cpp | 10 | ||||
-rw-r--r-- | src/uscxml/transform/ChartToVHDL.h | 2 | ||||
-rw-r--r-- | src/uscxml/transform/FlatStateIdentifier.h | 2 |
15 files changed, 274 insertions, 214 deletions
diff --git a/src/uscxml/transform/ChartAnnotator.cpp b/src/uscxml/transform/ChartAnnotator.cpp new file mode 100644 index 0000000..5bab391 --- /dev/null +++ b/src/uscxml/transform/ChartAnnotator.cpp @@ -0,0 +1,24 @@ +/** + * @file + * @author 2012-2015 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de) + * @copyright Simplified BSD + * + * @cond + * This program is free software: you can redistribute it and/or modify + * it under the terms of the FreeBSD license as published by the FreeBSD + * project. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the FreeBSD license along with this + * program. If not, see <http://www.opensource.org/licenses/bsd-license>. + * @endcond + */ + +#include "ChartAnnotator.h" + +namespace uscxml { + +}
\ No newline at end of file diff --git a/src/uscxml/transform/ChartAnnotator.h b/src/uscxml/transform/ChartAnnotator.h new file mode 100644 index 0000000..3ce8f4a --- /dev/null +++ b/src/uscxml/transform/ChartAnnotator.h @@ -0,0 +1,27 @@ +/** + * @file + * @author 2012-2016 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de) + * @copyright Simplified BSD + * + * @cond + * This program is free software: you can redistribute it and/or modify + * it under the terms of the FreeBSD license as published by the FreeBSD + * project. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the FreeBSD license along with this + * program. If not, see <http://www.opensource.org/licenses/bsd-license>. + * @endcond + */ + +#ifndef CHARTANNOTATOR_H_2AC11ECB +#define CHARTANNOTATOR_H_2AC11ECB + +namespace uscxml { + +} + +#endif /* end of include guard: CHARTANNOTATOR_H_2AC11ECB */ diff --git a/src/uscxml/transform/ChartToC.cpp b/src/uscxml/transform/ChartToC.cpp index 7cc50fc..ee0b431 100644 --- a/src/uscxml/transform/ChartToC.cpp +++ b/src/uscxml/transform/ChartToC.cpp @@ -21,10 +21,11 @@ #include "uscxml/transform/ChartToC.h" #include "uscxml/debug/Complexity.h" #include <DOM/io/Stream.hpp> +#include <DOM/SAX2DOM/SAX2DOM.hpp> #include <iostream> #include "uscxml/UUID.h" #include "uscxml/util/MD5.hpp" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include <math.h> #include <boost/algorithm/string.hpp> #include <glog/logging.h> @@ -205,10 +206,10 @@ void ChartToC::setStateCompletion() { completion = getChildStates(state); } else if (state.hasAttribute("initial")) { - completion = getStates(tokenizeIdRefs(state.getAttribute("initial"))); + completion = getStates(tokenize(state.getAttribute("initial"))); } else { - NodeSet<std::string> initElems = filterChildElements(_nsInfo.xmlNSPrefix + "initial", state); + NodeSet<std::string> initElems = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "initial", state); if(initElems.size() > 0 && !iequals(ATTR_CAST(initElems[0], "generated"), "true")) { // initial element is first child completion.push_back(initElems[0]); @@ -450,7 +451,7 @@ void ChartToC::writeForwardDeclarations(std::ostream& stream) { } void ChartToC::findNestedMachines() { - NodeSet<std::string> invokes = InterpreterImpl::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); for (size_t i = 0; i < invokes.size(); i++) { if(isInEmbeddedDocument(invokes[i])) @@ -472,10 +473,10 @@ void ChartToC::findNestedMachines() { c2c = new ChartToC(Interpreter::fromURL(srcURL.asString())); } else { // is there a nested scxml machine inside? - NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", invoke); + NodeSet<std::string> contents = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", invoke); if (contents.size() == 0) continue; - NodeSet<std::string> scxmls = filterChildElements(_nsInfo.xmlNSPrefix + "scxml", contents[0]); + NodeSet<std::string> scxmls = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "scxml", contents[0]); if (scxmls.size() == 0) continue; @@ -555,7 +556,7 @@ void ChartToC::writeMacros(std::ostream& stream) { stream << std::endl; stream << "#ifndef USCXML_MAX_NR_STATES_BYTES " << std::endl; - stream << "# define USCXML_MAX_NR_STATES_BYTES " << _stateCharArraySize << std::endl; + stream << "# define USCXML_MAX_NR_STATES_BYTES " << (std::max)((size_t)1, _stateCharArraySize) << std::endl; stream << "#endif " << std::endl; stream << std::endl; @@ -566,7 +567,7 @@ void ChartToC::writeMacros(std::ostream& stream) { stream << std::endl; stream << "#ifndef USCXML_MAX_NR_TRANS_BYTES " << std::endl; - stream << "# define USCXML_MAX_NR_TRANS_BYTES " << _transCharArraySize << std::endl; + stream << "# define USCXML_MAX_NR_TRANS_BYTES " << (std::max)((size_t)1, _transCharArraySize) << std::endl; stream << "#endif " << std::endl; stream << std::endl; @@ -1037,7 +1038,7 @@ void ChartToC::writeExecContentFinalize(std::ostream& stream) { for (size_t i = 0; i < finalizes.size(); i++) { Element<std::string> finalize(finalizes[i]); - NodeSet<std::string> execContent = filterChildType(Node_base::ELEMENT_NODE, finalize); + NodeSet<std::string> execContent = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, finalize); if (execContent.size() > 0) { stream << "static int " << _prefix << "_" << DOMUtils::idForNode(finalize) << "(const uscxml_ctx* ctx, const uscxml_elem_invoke* invocation, const void* event) {" << std::endl; @@ -1066,7 +1067,7 @@ void ChartToC::writeExecContent(std::ostream& stream) { if (i == 0) { // root state - we need to perform some initialization here - NodeSet<std::string> globalScripts = filterChildElements(_nsInfo.xmlNSPrefix + "script", state); + NodeSet<std::string> globalScripts = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "script", state); if (globalScripts.size() > 0) { for (size_t j = 0; j < globalScripts.size(); j++) { stream << "static int " << _prefix << "_global_script_" << toStr(j) << "(const uscxml_ctx* ctx, const uscxml_state* state, const void* event) {" << std::endl; @@ -1086,7 +1087,7 @@ void ChartToC::writeExecContent(std::ostream& stream) { } } - NodeSet<std::string> onexit = filterChildElements(_nsInfo.xmlNSPrefix + "onexit", state); + NodeSet<std::string> onexit = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onexit", state); for (size_t j = 0; j < onexit.size(); j++) { stream << "static int " << _prefix << "_" << DOMUtils::idForNode(state) << "_on_exit_" << toStr(j) << "(const uscxml_ctx* ctx, const uscxml_state* state, const void* event) {" << std::endl; stream << " int err = USCXML_ERR_OK;" << std::endl; @@ -1107,7 +1108,7 @@ void ChartToC::writeExecContent(std::ostream& stream) { } - NodeSet<std::string> onentry = filterChildElements(_nsInfo.xmlNSPrefix + "onentry", state); + NodeSet<std::string> onentry = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onentry", state); for (size_t j = 0; j < onentry.size(); j++) { stream << "static int " << _prefix << "_" << DOMUtils::idForNode(state) << "_on_entry_" << toStr(j) << "(const uscxml_ctx* ctx, const uscxml_state* state, const void* event) {" << std::endl; stream << " int err = USCXML_ERR_OK;" << std::endl; @@ -1129,7 +1130,7 @@ void ChartToC::writeExecContent(std::ostream& stream) { } - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", state); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", state); if (invokes.size() > 0) { stream << "static int " << _prefix << "_" << DOMUtils::idForNode(state) << "_invoke(const uscxml_ctx* ctx, const uscxml_state* s, const uscxml_elem_invoke* invocation, unsigned char uninvoke) {" << std::endl; for (size_t j = 0; j < invokes.size(); j++) { @@ -1144,7 +1145,7 @@ void ChartToC::writeExecContent(std::ostream& stream) { for (size_t i = 0; i < _transitions.size(); i++) { Element<std::string> transition(_transitions[i]); - NodeSet<std::string> execContent = filterChildType(Node_base::ELEMENT_NODE, transition); + NodeSet<std::string> execContent = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, transition); if (execContent.size() > 0) { stream << "static int " << _prefix << "_" << DOMUtils::idForNode(transition) << "_on_trans(const uscxml_ctx* ctx, const uscxml_state* state, const void* event) {" << std::endl; @@ -1205,7 +1206,7 @@ void ChartToC::writeExecContent(std::ostream& stream, const Arabica::DOM::Node<s stream << " if unlikely((err = ctx->exec_content_script(ctx, "; stream << (HAS_ATTR(elem, "src") ? "\"" + escape(ATTR(elem, "src")) + "\"" : "NULL") << ", "; - NodeSet<std::string> scriptTexts = filterChildType(Node_base::TEXT_NODE, elem); + NodeSet<std::string> scriptTexts = DOMUtils::filterChildType(Node_base::TEXT_NODE, elem); if (scriptTexts.size() > 0) { stream << "\""; writeExecContent(stream, scriptTexts[0], 0); @@ -1329,7 +1330,7 @@ void ChartToC::writeElementInfoInvocation(std::ostream& stream) { stream << "#ifndef USCXML_NO_ELEM_INFO" << std::endl; stream << std::endl; - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); if (invokes.size() > 0) { _hasElement.insert("invoke"); stream << "static const uscxml_elem_invoke " << _prefix << "_elem_invokes[" << invokes.size() << "] = {" << std::endl; @@ -1426,7 +1427,7 @@ void ChartToC::writeElementInfoInvocation(std::ostream& stream) { stream << ", " << std::endl; stream << " /* finalize */ "; - NodeSet<std::string> finalizes = filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invoke); + NodeSet<std::string> finalizes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invoke); if (finalizes.size() > 0) { stream << _prefix << "_" << DOMUtils::idForNode(finalizes[0]); } else { @@ -1434,7 +1435,7 @@ void ChartToC::writeElementInfoInvocation(std::ostream& stream) { } stream << ", " << std::endl; - NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", invoke); + NodeSet<std::string> contents = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", invoke); if (contents.size() > 0 && !HAS_ATTR(invoke, "md5sum")) { std::stringstream ss; NodeList<std::string> cChilds = contents[0].getChildNodes(); @@ -1498,7 +1499,7 @@ void ChartToC::writeElementInfo(std::ostream& stream) { stream << (HAS_ATTR(assign, "location") ? "\"" + escape(ATTR(assign, "location")) + "\"" : "NULL") << ", "; stream << (HAS_ATTR(assign, "expr") ? "\"" + escape(ATTR(assign, "expr")) + "\"" : "NULL") << ", "; - NodeSet<std::string> assignTexts = filterChildType(Node_base::TEXT_NODE, assign); + NodeSet<std::string> assignTexts = DOMUtils::filterChildType(Node_base::TEXT_NODE, assign); if (assignTexts.size() > 0) { if (boost::trim_copy(assignTexts[0].getNodeValue()).length() > 0) { std::string escaped = escape(assignTexts[0].getNodeValue()); @@ -1557,7 +1558,7 @@ void ChartToC::writeElementInfo(std::ostream& stream) { stream << (HAS_ATTR(data, "src") ? "\"" + escape(ATTR(data, "src")) + "\"" : "NULL") << ", "; stream << (HAS_ATTR(data, "expr") ? "\"" + escape(ATTR(data, "expr")) + "\"" : "NULL") << ", "; - NodeSet<std::string> dataTexts = filterChildType(Node_base::TEXT_NODE, data); + NodeSet<std::string> dataTexts = DOMUtils::filterChildType(Node_base::TEXT_NODE, data); if (dataTexts.size() > 0) { if (boost::trim_copy(dataTexts[0].getNodeValue()).length() > 0) { std::string escaped = escape(dataTexts[0].getNodeValue()); @@ -1640,7 +1641,7 @@ void ChartToC::writeElementInfo(std::ostream& stream) { stream << std::endl << " /* namelist */ "; stream << (HAS_ATTR(send, "namelist") ? "\"" + escape(ATTR(send, "namelist")) + "\"" : "NULL") << ", "; - NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", send); + NodeSet<std::string> contents = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", send); if (contents.size() > 0) { std::stringstream ss; NodeList<std::string> cChilds = contents[0].getChildNodes(); @@ -1684,7 +1685,7 @@ void ChartToC::writeElementInfo(std::ostream& stream) { // parent stream << ATTR_CAST(donedata.getParentNode(), "documentOrder") << ", "; - NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", donedata); + NodeSet<std::string> contents = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", donedata); if (contents.size() > 0) { std::stringstream ss; NodeList<std::string> cChilds = contents[0].getChildNodes(); @@ -1751,7 +1752,11 @@ void ChartToC::writeMachineInfo(std::ostream& stream) { stream << " /* datamodel */ \"" << (HAS_ATTR(_scxml, "datamodel") ? ATTR(_scxml, "datamodel") : "null") << "\"," << std::endl; stream << " /* uuid */ \"" << _md5 << "\"," << std::endl; stream << " /* states */ " << "&" << _prefix << "_states[0], " << std::endl; - stream << " /* transitions */ " << "&" << _prefix << "_transitions[0], " << std::endl; + if (_transitions.size() > 0) { + stream << " /* transitions */ " << "&" << _prefix << "_transitions[0], " << std::endl; + } else { + stream << " /* transitions */ " << "NULL, " << std::endl; + } stream << " /* parent */ "; if (_parentMachine != NULL) { size_t parentIndex = 0; @@ -1769,7 +1774,7 @@ void ChartToC::writeMachineInfo(std::ostream& stream) { stream << " /* donedata */ " << "&" << _prefix << "_elem_donedatas[0], " << std::endl; stream << " /* script */ "; - if (filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml).size() > 0) { + if (DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml).size() > 0) { stream << _prefix << "_global_script" << std::endl; } else { stream << "NULL"; @@ -1810,7 +1815,7 @@ void ChartToC::writeMachineInfo(std::ostream& stream) { stream << " /* donedata */ " << "&" << m->_prefix << "_elem_donedatas[0], " << std::endl; stream << " /* script */ "; - if (filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml).size() > 0) { + if (DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml).size() > 0) { stream << m->_prefix << "_global_script" << std::endl; } else { stream << "NULL"; @@ -1852,17 +1857,17 @@ void ChartToC::writeStates(std::ostream& stream) { // onentry stream << " /* onentry */ "; - stream << (filterChildElements(_nsInfo.xmlNSPrefix + "onentry", state).size() > 0 ? _prefix + "_" + DOMUtils::idForNode(state) + "_on_entry" : "NULL"); + stream << (DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onentry", state).size() > 0 ? _prefix + "_" + DOMUtils::idForNode(state) + "_on_entry" : "NULL"); stream << "," << std::endl; // onexit stream << " /* onexit */ "; - stream << (filterChildElements(_nsInfo.xmlNSPrefix + "onexit", state).size() > 0 ? _prefix + "_" + DOMUtils::idForNode(state) + "_on_exit" : "NULL"); + stream << (DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onexit", state).size() > 0 ? _prefix + "_" + DOMUtils::idForNode(state) + "_on_exit" : "NULL"); stream << "," << std::endl; // invokers stream << " /* invoke */ "; - stream << (filterChildElements(_nsInfo.xmlNSPrefix + "invoke", state).size() > 0 ? _prefix + "_" + DOMUtils::idForNode(state) + "_invoke" : "NULL"); + stream << (DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", state).size() > 0 ? _prefix + "_" + DOMUtils::idForNode(state) + "_invoke" : "NULL"); stream << "," << std::endl; // children @@ -1932,95 +1937,97 @@ void ChartToC::writeTransitions(std::ostream& stream) { elements.insert(_nsInfo.xmlNSPrefix + "transition"); NodeSet<std::string> transDocOrder = DOMUtils::inDocumentOrder(elements, _scxml); - stream << "static const uscxml_transition " << _prefix << "_transitions[" << toStr(_transitions.size()) << "] = {" << std::endl; - for (size_t i = 0; i < _transitions.size(); i++) { - Element<std::string> transition(_transitions[i]); - - stream << " { /* transition number " << ATTR(transition, "documentOrder") << " with priority " << toStr(i) << std::endl; - stream << " target: " << ATTR(transition, "target") << std::endl; - stream << " */" << std::endl; + if (_transitions.size() > 0) { + stream << "static const uscxml_transition " << _prefix << "_transitions[" << toStr(_transitions.size()) << "] = {" << std::endl; + for (size_t i = 0; i < _transitions.size(); i++) { + Element<std::string> transition(_transitions[i]); - // source - stream << " /* source */ "; - stream << ATTR_CAST(transition.getParentNode(), "documentOrder"); - stream << "," << std::endl; + stream << " { /* transition number " << ATTR(transition, "documentOrder") << " with priority " << toStr(i) << std::endl; + stream << " target: " << ATTR(transition, "target") << std::endl; + stream << " */" << std::endl; - // targets - stream << " /* target */ "; - if (HAS_ATTR(transition, "targetBools")) { - stream << "{ "; - writeCharArrayInitList(stream, ATTR(transition, "targetBools")); - stream << " /* " << ATTR(transition, "targetBools") << " */ }"; + // source + stream << " /* source */ "; + stream << ATTR_CAST(transition.getParentNode(), "documentOrder"); + stream << "," << std::endl; - } else { - stream << "{ NULL }"; - } - stream << "," << std::endl; + // targets + stream << " /* target */ "; + if (HAS_ATTR(transition, "targetBools")) { + stream << "{ "; + writeCharArrayInitList(stream, ATTR(transition, "targetBools")); + stream << " /* " << ATTR(transition, "targetBools") << " */ }"; - stream << " /* event */ "; - stream << (HAS_ATTR(transition, "event") ? "\"" + escape(ATTR(transition, "event")) + "\"" : "NULL"); - stream << "," << std::endl; + } else { + stream << "{ NULL }"; + } + stream << "," << std::endl; - stream << " /* condition */ "; - stream << (HAS_ATTR(transition, "cond") ? "\"" + escape(ATTR(transition, "cond")) + "\"" : "NULL"); - stream << "," << std::endl; + stream << " /* event */ "; + stream << (HAS_ATTR(transition, "event") ? "\"" + escape(ATTR(transition, "event")) + "\"" : "NULL"); + stream << "," << std::endl; - // on transition handlers - stream << " /* ontrans */ "; - if (filterChildType(Arabica::DOM::Node_base::ELEMENT_NODE, transition).size() > 0) { - stream << _prefix << "_" << DOMUtils::idForNode(transition) + "_on_trans"; - } else { - stream << "NULL"; - } - stream << "," << std::endl; + stream << " /* condition */ "; + stream << (HAS_ATTR(transition, "cond") ? "\"" + escape(ATTR(transition, "cond")) + "\"" : "NULL"); + stream << "," << std::endl; - // type - stream << " /* type */ "; - std::string seperator = ""; - if (!HAS_ATTR(transition, "target")) { - stream << seperator << "USCXML_TRANS_TARGETLESS"; - seperator = " | "; - } + // on transition handlers + stream << " /* ontrans */ "; + if (DOMUtils::filterChildType(Arabica::DOM::Node_base::ELEMENT_NODE, transition).size() > 0) { + stream << _prefix << "_" << DOMUtils::idForNode(transition) + "_on_trans"; + } else { + stream << "NULL"; + } + stream << "," << std::endl; + + // type + stream << " /* type */ "; + std::string seperator = ""; + if (!HAS_ATTR(transition, "target")) { + stream << seperator << "USCXML_TRANS_TARGETLESS"; + seperator = " | "; + } - if (HAS_ATTR(transition, "type") && iequals(ATTR(transition, "type"), "internal")) { - stream << seperator << "USCXML_TRANS_INTERNAL"; - seperator = " | "; - } + if (HAS_ATTR(transition, "type") && iequals(ATTR(transition, "type"), "internal")) { + stream << seperator << "USCXML_TRANS_INTERNAL"; + seperator = " | "; + } - if (!HAS_ATTR(transition, "event")) { - stream << seperator << "USCXML_TRANS_SPONTANEOUS"; - seperator = " | "; - } + if (!HAS_ATTR(transition, "event")) { + stream << seperator << "USCXML_TRANS_SPONTANEOUS"; + seperator = " | "; + } - if (iequals(TAGNAME_CAST(transition.getParentNode()), "history")) { - stream << seperator << "USCXML_TRANS_HISTORY"; - seperator = " | "; - } + if (iequals(TAGNAME_CAST(transition.getParentNode()), "history")) { + stream << seperator << "USCXML_TRANS_HISTORY"; + seperator = " | "; + } - if (iequals(TAGNAME_CAST(transition.getParentNode()), "initial")) { - stream << seperator << "USCXML_TRANS_INITIAL"; - seperator = " | "; - } + if (iequals(TAGNAME_CAST(transition.getParentNode()), "initial")) { + stream << seperator << "USCXML_TRANS_INITIAL"; + seperator = " | "; + } - if (seperator.size() == 0) { - stream << "0"; - } - stream << "," << std::endl; + if (seperator.size() == 0) { + stream << "0"; + } + stream << "," << std::endl; - // conflicts - stream << " /* conflicts */ { "; - writeCharArrayInitList(stream, ATTR(transition, "conflictBools")); - stream << " /* " << ATTR(transition, "conflictBools") << " */ }, " << std::endl; + // conflicts + stream << " /* conflicts */ { "; + writeCharArrayInitList(stream, ATTR(transition, "conflictBools")); + stream << " /* " << ATTR(transition, "conflictBools") << " */ }, " << std::endl; - // exit set - stream << " /* exit set */ { "; - writeCharArrayInitList(stream, ATTR(transition, "exitSetBools")); - stream << " /* " << ATTR(transition, "exitSetBools") << " */ }" << std::endl; + // exit set + stream << " /* exit set */ { "; + writeCharArrayInitList(stream, ATTR(transition, "exitSetBools")); + stream << " /* " << ATTR(transition, "exitSetBools") << " */ }" << std::endl; - stream << " }" << (i + 1 < _transitions.size() ? ",": "") << std::endl; + stream << " }" << (i + 1 < _transitions.size() ? ",": "") << std::endl; + } + stream << "};" << std::endl; + stream << std::endl; } - stream << "};" << std::endl; - stream << std::endl; stream << "#endif" << std::endl; stream << std::endl; diff --git a/src/uscxml/transform/ChartToC.h b/src/uscxml/transform/ChartToC.h index bb17102..0c9c2e5 100644 --- a/src/uscxml/transform/ChartToC.h +++ b/src/uscxml/transform/ChartToC.h @@ -21,7 +21,7 @@ #define FSMTOCPP_H_201672B0 #include "uscxml/interpreter/InterpreterRC.h" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include "uscxml/util/Trie.h" #include "Transformer.h" diff --git a/src/uscxml/transform/ChartToFSM.cpp b/src/uscxml/transform/ChartToFSM.cpp index b78a2dd..da53c1f 100644 --- a/src/uscxml/transform/ChartToFSM.cpp +++ b/src/uscxml/transform/ChartToFSM.cpp @@ -23,6 +23,7 @@ #include "uscxml/Factory.h" #include "uscxml/debug/Complexity.h" +#include <DOM/SAX2DOM/SAX2DOM.hpp> #include <DOM/io/Stream.hpp> #include <glog/logging.h> @@ -146,7 +147,7 @@ ChartToFSM::~ChartToFSM() { } // tear down caches - Arabica::XPath::NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); + Arabica::XPath::NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); for (int i = 0; i < allTransitions.size(); i++) { _transParents.erase(allTransitions[i]); } @@ -212,7 +213,7 @@ InterpreterState ChartToFSM::interpret() { // setup caches { - Arabica::XPath::NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); + Arabica::XPath::NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); indexedTransitions.reserve(allTransitions.size()); for (int i = 0; i < allTransitions.size(); i++) { _transParents[allTransitions[i]] = InterpreterImpl::getParentState(allTransitions[i]); @@ -220,7 +221,7 @@ InterpreterState ChartToFSM::interpret() { } // identify all history elements - NodeSet<std::string> histories = filterChildElements(_nsInfo.xmlNSPrefix + "history", _scxml, true); + NodeSet<std::string> histories = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "history", _scxml, true); for (int i = 0; i < histories.size(); i++) { _historyTargets[ATTR_CAST(histories[i], "id")] = Element<std::string>(histories[i]); } @@ -234,7 +235,7 @@ InterpreterState ChartToFSM::interpret() { } // set invokeid for all invokers to parent state if none given - NodeSet<std::string> invokers = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + NodeSet<std::string> invokers = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); for (int i = 0; i < invokers.size(); i++) { Element<std::string> invokerElem = Element<std::string>(invokers[i]); invokerElem.setAttribute("parent", ATTR_CAST(invokerElem.getParentNode(), "id")); @@ -435,12 +436,12 @@ void ChartToFSM::internalDoneSend(const Arabica::DOM::Element<std::string>& stat onentry.appendChild(raise); if (doneData) { - Arabica::XPath::NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", doneData); + Arabica::XPath::NodeSet<std::string> contents = DOMUtils::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); + Arabica::XPath::NodeSet<std::string> params = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "param", doneData); if (params.size() > 0) { Node<std::string> imported = _flatDoc.importNode(params[0], true); raise.appendChild(imported); @@ -532,7 +533,7 @@ static bool filterChildEnabled(const NodeSet<std::string>& transitions) { if (p1 == p2) { std::string eventDesc1 = ATTR_CAST(t1, "event"); std::string eventDesc2 = ATTR_CAST(t2, "event"); - if (InterpreterImpl::nameMatch(eventDesc1, eventDesc2)) { + if (nameMatch(eventDesc1, eventDesc2)) { return false; } } @@ -562,14 +563,14 @@ bool ChartToFSM::hasForeachInBetween(const Arabica::DOM::Node<std::string>& ance void ChartToFSM::annotateRaiseAndSend(const Arabica::DOM::Element<std::string>& root) { NodeSet<std::string> execContent; - execContent.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true)); - execContent.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "onentry", _scxml, true)); - execContent.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "onexit", _scxml, true)); + execContent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true)); + execContent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onentry", _scxml, true)); + execContent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onexit", _scxml, true)); for (int i = 0; i < execContent.size(); i++) { Element<std::string> execContentElem(execContent[i]); int nrRaise = 0; - NodeSet<std::string> raise = filterChildElements(_nsInfo.xmlNSPrefix + "raise", execContent[i], true); + NodeSet<std::string> raise = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "raise", execContent[i], true); for (int j = 0; j < raise.size(); j++) { if (hasForeachInBetween(execContent[i], raise[j])) { execContentElem.setAttribute("raise", "-1"); @@ -583,7 +584,7 @@ void ChartToFSM::annotateRaiseAndSend(const Arabica::DOM::Element<std::string>& DONE_COUNT_RAISE: int nrSend = 0; - NodeSet<std::string> sends = filterChildElements(_nsInfo.xmlNSPrefix + "send", execContent[i], true); + NodeSet<std::string> sends = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "send", execContent[i], true); for (int j = 0; j < sends.size(); j++) { if (hasForeachInBetween(execContent[i], sends[j])) { execContentElem.setAttribute("send", "-1"); @@ -600,7 +601,7 @@ DONE_COUNT_SEND: } void ChartToFSM::annotateDomain() { - Arabica::XPath::NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); + Arabica::XPath::NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); for (int i = 0; i < allTransitions.size(); i++) { Element<std::string> transition(allTransitions[i]); Arabica::DOM::Node<std::string> domain = getTransitionDomain(transition); @@ -613,7 +614,7 @@ void ChartToFSM::annotateDomain() { } void ChartToFSM::annotateExitSet() { - Arabica::XPath::NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); + Arabica::XPath::NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); for (int i = 0; i < allTransitions.size(); i++) { Element<std::string> transition(allTransitions[i]); Arabica::DOM::Node<std::string> domain = getTransitionDomain(transition); @@ -633,7 +634,7 @@ void ChartToFSM::annotateExitSet() { } void ChartToFSM::annotateEntrySet() { - Arabica::XPath::NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); + Arabica::XPath::NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); for (int i = 0; i < allTransitions.size(); i++) { Element<std::string> transition(allTransitions[i]); @@ -664,7 +665,7 @@ void ChartToFSM::annotateEntrySet() { } void ChartToFSM::annotateConflicts() { - Arabica::XPath::NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); + Arabica::XPath::NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true); Arabica::XPath::NodeSet<std::string> allStates = getAllStates(); for (int i = 0; i < allTransitions.size(); i++) { @@ -744,7 +745,7 @@ void ChartToFSM::indexTransitions() { #if 0 void ChartToFSM::indexTransitions(const Arabica::DOM::Element<std::string>& root) { // breadth first traversal of transitions - Arabica::XPath::NodeSet<std::string> levelTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", root); + Arabica::XPath::NodeSet<std::string> levelTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", root); for (int i = levelTransitions.size() - 1; i >= 0; i--) { // push into index starting with least prior indexedTransitions.push_back(Element<std::string>(levelTransitions[i])); @@ -768,7 +769,7 @@ void ChartToFSM::indexTransitions(const Arabica::DOM::Element<std::string>& root indexTransitions(childElem); } - Arabica::XPath::NodeSet<std::string> levelTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", root); + Arabica::XPath::NodeSet<std::string> levelTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", root); for (int i = 0; i < levelTransitions.size(); i++) { // push into index starting with least prior indexedTransitions.push_back(Element<std::string>(levelTransitions[i])); @@ -1247,10 +1248,10 @@ TransitionTreeNode* ChartToFSM::buildTransTree(const Arabica::DOM::Element<std:: // get all transitions and states from root without recursing NodeSet<std::string> nested; - nested.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "transition", root)); - nested.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "state", root)); - nested.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "final", root)); - nested.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "parallel", root)); + nested.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", root)); + nested.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "state", root)); + nested.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "final", root)); + nested.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "parallel", root)); nested.to_document_order(); TransitionTreeNode* lastNode = NULL; @@ -1295,7 +1296,7 @@ TransitionTreeNode* ChartToFSM::buildTransTree(const Arabica::DOM::Element<std:: void ChartToFSM::getPotentialTransitionsForConfFromPowerSet(const Arabica::XPath::NodeSet<std::string>& conf, std::map<std::string, GlobalTransition*>& outMap) { // get all transition elements from states in the current configuration - NodeSet<std::string> allTransitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", conf); + NodeSet<std::string> allTransitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", conf); { std::string seperator = ""; @@ -1445,7 +1446,7 @@ void ChartToFSM::explode() { // add all invokers for initial transition for (unsigned int i = 0; i < _statesToInvoke.size(); i++) { - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _statesToInvoke[i]); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _statesToInvoke[i]); for (unsigned int j = 0; j < invokes.size(); j++) { invoke(Element<std::string>(invokes[j])); } @@ -1592,7 +1593,7 @@ void ChartToFSM::explode() { // add all invokers for (unsigned int i = 0; i < _statesToInvoke.size(); i++) { - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _statesToInvoke[i]); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _statesToInvoke[i]); for (unsigned int j = 0; j < invokes.size(); j++) { invoke(Element<std::string>(invokes[j])); } @@ -1915,7 +1916,7 @@ GlobalTransition::GlobalTransition(const Arabica::XPath::NodeSet<std::string>& t conditions.push_back(boost::trim_copy(ATTR(transElem, "cond"))); } - std::list<std::string> targets = InterpreterImpl::tokenizeIdRefs(ATTR(transElem, "target")); + std::list<std::string> targets = tokenize(ATTR(transElem, "target")); std::list<std::string>::iterator targetIter = targets.begin(); while(targetIter != targets.end()) { // std::cout << "// " << *targetIter << std::endl; @@ -1983,7 +1984,7 @@ std::list<std::string> GlobalTransition::getCommonEvents(const NodeSet<std::stri for (int i = 0; i < transitions.size(); i++) { // for every transition - std::list<std::string> eventNames = InterpreterImpl::tokenizeIdRefs(ATTR_CAST(transitions[i], "event")); + std::list<std::string> eventNames = tokenize(ATTR_CAST(transitions[i], "event")); for (std::list<std::string>::iterator eventNameIter = eventNames.begin(); eventNameIter != eventNames.end(); @@ -2002,7 +2003,7 @@ std::list<std::string> GlobalTransition::getCommonEvents(const NodeSet<std::stri // check if token would activate all other transitions if (i == j) continue; - if (!InterpreterImpl::nameMatch(ATTR_CAST(transitions[j], "event"), eventName)) { + if (!nameMatch(ATTR_CAST(transitions[j], "event"), eventName)) { isMatching = false; break; } @@ -2020,7 +2021,7 @@ std::list<std::string> GlobalTransition::getCommonEvents(const NodeSet<std::stri for (std::list<std::string>::iterator innerEventNameIter = prefixes.begin(); innerEventNameIter != prefixes.end(); innerEventNameIter++) { - if (!iequals(*outerEventNameIter, *innerEventNameIter) && InterpreterImpl::nameMatch(*outerEventNameIter, *innerEventNameIter)) { + if (!iequals(*outerEventNameIter, *innerEventNameIter) && nameMatch(*outerEventNameIter, *innerEventNameIter)) { goto IS_PREFIX; } } diff --git a/src/uscxml/transform/ChartToFSM.h b/src/uscxml/transform/ChartToFSM.h index ab4aed4..fa76f3a 100644 --- a/src/uscxml/transform/ChartToFSM.h +++ b/src/uscxml/transform/ChartToFSM.h @@ -20,8 +20,8 @@ #ifndef CHARTTOFSM_H_IOKPYEBY #define CHARTTOFSM_H_IOKPYEBY -#include "uscxml/DOMUtils.h" #include "uscxml/interpreter/InterpreterRC.h" +#include "uscxml/dom/DOMUtils.h" #include <DOM/Document.hpp> #include <DOM/Node.hpp> #include <XPath/XPath.hpp> diff --git a/src/uscxml/transform/ChartToFlatSCXML.cpp b/src/uscxml/transform/ChartToFlatSCXML.cpp index 2905444..984c287 100644 --- a/src/uscxml/transform/ChartToFlatSCXML.cpp +++ b/src/uscxml/transform/ChartToFlatSCXML.cpp @@ -63,7 +63,7 @@ void ChartToFlatSCXML::writeTo(std::ostream& stream) { } // remove all debug attributes - NodeSet<std::string> elementNodes = filterChildType(Node_base::ELEMENT_NODE, _scxml, true); + NodeSet<std::string> elementNodes = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, _scxml, true); for (int i = 0; i < elementNodes.size(); i++) { Element<std::string> element(elementNodes[i]); if (!envVarIsTrue("USCXML_ANNOTATE_GLOBAL_TRANS_SENDS") && HAS_ATTR(element, "send")) @@ -92,7 +92,7 @@ void ChartToFlatSCXML::createDocument() { return; { - NodeSet<std::string> allElements = filterChildType(Node_base::ELEMENT_NODE, _scxml, true); + NodeSet<std::string> allElements = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, _scxml, true); size_t nrElements = 0; for (int i = 0; i < allElements.size(); i++) { if (!isInEmbeddedDocument(allElements[i])) @@ -133,7 +133,7 @@ void ChartToFlatSCXML::createDocument() { NodeSet<std::string> datas; if (_binding == InterpreterImpl::LATE) { // with late binding, just copy direct datamodel childs - datas = filterChildElements(_nsInfo.xmlNSPrefix + "datamodel", _origSCXML); + datas = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "datamodel", _origSCXML); } else { // with early binding, copy all datamodel elements into scxml element datas = _xpath.evaluate("//" + _nsInfo.xpathPrefix + "datamodel", _origSCXML).asNodeSet(); @@ -146,13 +146,13 @@ void ChartToFlatSCXML::createDocument() { } - NodeSet<std::string> scripts = filterChildElements(_nsInfo.xmlNSPrefix + "script", _origSCXML); + NodeSet<std::string> scripts = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "script", _origSCXML); for (int i = 0; i < scripts.size(); i++) { Node<std::string> imported = _flatDoc.importNode(scripts[i], true); _scxml.appendChild(imported); } - NodeSet<std::string> comments = filterChildType(Node_base::COMMENT_NODE, _origSCXML); + NodeSet<std::string> comments = DOMUtils::filterChildType(Node_base::COMMENT_NODE, _origSCXML); for (int i = 0; i < comments.size(); i++) { Node<std::string> imported = _flatDoc.importNode(comments[i], true); _scxml.appendChild(imported); @@ -177,13 +177,13 @@ void ChartToFlatSCXML::createDocument() { _document = _flatDoc; - NodeSet<std::string> scxmls = filterChildElements(_nsInfo.xmlNSPrefix + "scxml", _document); + NodeSet<std::string> scxmls = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "scxml", _document); if (scxmls.size() > 0) { _scxml = Element<std::string>(scxmls[0]); } { - NodeSet<std::string> allElements = filterChildType(Node_base::ELEMENT_NODE, _scxml, true); + NodeSet<std::string> allElements = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, _scxml, true); size_t nrElements = 0; for (int i = 0; i < allElements.size(); i++) { if (!isInEmbeddedDocument(allElements[i])) @@ -372,7 +372,7 @@ Node<std::string> ChartToFlatSCXML::globalTransitionToNode(GlobalTransition* glo // we entered a new child - check if it has a datamodel and we entered for the first time if (_binding == InterpreterImpl::LATE) { - NodeSet<std::string> datamodel = filterChildElements(_nsInfo.xmlNSPrefix + "datamodel", actionIter->entered); + NodeSet<std::string> datamodel = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "datamodel", actionIter->entered); if (datamodel.size() > 0 && !isMember(actionIter->entered, _globalConf[globalTransition->source]->getAlreadyEnteredStates())) { childs.push_back(datamodel); } diff --git a/src/uscxml/transform/ChartToMinimalSCXML.cpp b/src/uscxml/transform/ChartToMinimalSCXML.cpp index 69ac9cb..f052b09 100644 --- a/src/uscxml/transform/ChartToMinimalSCXML.cpp +++ b/src/uscxml/transform/ChartToMinimalSCXML.cpp @@ -49,7 +49,7 @@ void ChartToMinimalSCXML::writeTo(std::ostream& stream) { addMonitor(this); { - NodeSet<std::string> allElements = filterChildType(Node_base::ELEMENT_NODE, _scxml, true); + NodeSet<std::string> allElements = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, _scxml, true); size_t nrElements = 0; for (int i = 0; i < allElements.size(); i++) { if (!isInEmbeddedDocument(allElements[i])) @@ -61,11 +61,11 @@ void ChartToMinimalSCXML::writeTo(std::ostream& stream) { // test 278 - move embedded datas to topmost datamodel if (_binding == EARLY) { // move all data elements into topmost datamodel element - NodeSet<std::string> datas = filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true); + NodeSet<std::string> datas = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true); if (datas.size() > 0) { Node<std::string> topMostDatamodel; - NodeSet<std::string> datamodels = filterChildElements(_nsInfo.xmlNSPrefix + "datamodel", _scxml, false); + NodeSet<std::string> datamodels = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "datamodel", _scxml, false); if (datamodels.size() > 0) { topMostDatamodel = datamodels[0]; } else { @@ -118,7 +118,7 @@ void ChartToMinimalSCXML::writeTo(std::ostream& stream) { removeUnvisited(_scxml); { - NodeSet<std::string> allElements = filterChildType(Node_base::ELEMENT_NODE, _scxml, true); + NodeSet<std::string> allElements = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, _scxml, true); size_t nrElements = 0; for (int i = 0; i < allElements.size(); i++) { if (!isInEmbeddedDocument(allElements[i])) @@ -150,7 +150,7 @@ void ChartToMinimalSCXML::removeUnvisited(Arabica::DOM::Node<std::string>& node) // special handling for conditional blocks with if if (TAGNAME(elem) == _nsInfo.xmlNSPrefix + "if") { - NodeSet<std::string> ifChilds = filterChildType(Node_base::ELEMENT_NODE, elem, false); + NodeSet<std::string> ifChilds = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, elem, false); Element<std::string> lastConditional = elem; bool hadVisitedChild = false; for (int j = 0; j < ifChilds.size(); j++) { diff --git a/src/uscxml/transform/ChartToMinimalSCXML.h b/src/uscxml/transform/ChartToMinimalSCXML.h index 0260ee1..4eb0b92 100644 --- a/src/uscxml/transform/ChartToMinimalSCXML.h +++ b/src/uscxml/transform/ChartToMinimalSCXML.h @@ -20,8 +20,8 @@ #ifndef CHARTTOMINIMALSCXML_H_7B97677A #define CHARTTOMINIMALSCXML_H_7B97677A -#include "uscxml/DOMUtils.h" #include "uscxml/interpreter/InterpreterRC.h" +#include "uscxml/dom/DOMUtils.h" #include <DOM/Document.hpp> #include <DOM/Node.hpp> #include <XPath/XPath.hpp> diff --git a/src/uscxml/transform/ChartToPromela.cpp b/src/uscxml/transform/ChartToPromela.cpp index 4e3a990..747fb34 100644 --- a/src/uscxml/transform/ChartToPromela.cpp +++ b/src/uscxml/transform/ChartToPromela.cpp @@ -26,6 +26,7 @@ #include "uscxml/plugins/datamodel/promela/parser/promela.tab.hpp" #include <DOM/io/Stream.hpp> +#include <DOM/SAX2DOM/SAX2DOM.hpp> #include <iostream> #include "uscxml/UUID.h" #include <math.h> @@ -843,10 +844,10 @@ std::string ChartToPromela::conditionalizeForHist(const std::set<GlobalTransitio // for (;;) { // if (!HAS_ATTR(currState, "transient") || !DOMUtils::attributeIsTrue(ATTR(currState, "transient"))) // break; -// content.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "invoke", currState)); -// content.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "onentry", currState)); -// content.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "onexit", currState)); -// NodeSet<std::string> transitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", currState); +// content.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", currState)); +// content.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onentry", currState)); +// content.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "onexit", currState)); +// NodeSet<std::string> transitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", currState); // currState = _globalConf[ATTR_CAST(transitions[0], "target")]; // } // @@ -1511,7 +1512,7 @@ void ChartToPromela::writeExecutableContent(std::ostream& stream, const Arabica: child = child.getNextSibling(); } } else if(TAGNAME(nodeElem) == "script") { - NodeSet<std::string> scriptText = filterChildType(Node_base::TEXT_NODE, node, true); + NodeSet<std::string> scriptText = DOMUtils::filterChildType(Node_base::TEXT_NODE, node, true); for (int i = 0; i < scriptText.size(); i++) { stream << ADAPT_SRC(beautifyIndentation(scriptText[i].getNodeValue(), indent)) << std::endl; } @@ -1564,13 +1565,13 @@ void ChartToPromela::writeExecutableContent(std::ostream& stream, const Arabica: } else if(TAGNAME(nodeElem) == "if") { NodeSet<std::string> condChain; condChain.push_back(node); - condChain.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "elseif", node)); - condChain.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "else", node)); + condChain.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "elseif", node)); + condChain.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "else", node)); writeIfBlock(stream, condChain, indent); } else if(TAGNAME(nodeElem) == "assign") { - NodeSet<std::string> assignTexts = filterChildType(Node_base::TEXT_NODE, nodeElem, true); + NodeSet<std::string> assignTexts = DOMUtils::filterChildType(Node_base::TEXT_NODE, nodeElem, true); assert(assignTexts.size() > 0); stream << beautifyIndentation(ADAPT_SRC(boost::trim_copy(assignTexts[0].getNodeValue())), indent) << std::endl; @@ -1652,8 +1653,8 @@ void ChartToPromela::writeExecutableContent(std::ostream& stream, const Arabica: typeAssignSS << padding << " tmpE.type = " << eventType << ";" << std::endl; } - NodeSet<std::string> sendParams = filterChildElements(_nsInfo.xmlNSPrefix + "param", nodeElem); - NodeSet<std::string> sendContents = filterChildElements(_nsInfo.xmlNSPrefix + "content", nodeElem); + NodeSet<std::string> sendParams = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "param", nodeElem); + NodeSet<std::string> sendContents = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", nodeElem); std::string sendNameList = ATTR(nodeElem, "namelist"); if (sendParams.size() > 0) { for (int i = 0; i < sendParams.size(); i++) { @@ -1662,7 +1663,7 @@ void ChartToPromela::writeExecutableContent(std::ostream& stream, const Arabica: } } if (sendNameList.size() > 0) { - std::list<std::string> nameListIds = tokenizeIdRefs(sendNameList); + std::list<std::string> nameListIds = tokenize(sendNameList); std::list<std::string>::iterator nameIter = nameListIds.begin(); while(nameIter != nameListIds.end()) { typeAssignSS << padding << " tmpE.data." << *nameIter << " = " << ADAPT_SRC(*nameIter) << ";" << std::endl; @@ -1844,7 +1845,7 @@ PromelaInlines::PromelaInlines(const Arabica::DOM::Node<std::string>& node) { for (int i = 0; i < levelNodes.size(); i++) { // get all comments - NodeSet<std::string> comments = InterpreterImpl::filterChildType(Node_base::COMMENT_NODE, levelNodes[i]); + NodeSet<std::string> comments = DOMUtils::filterChildType(Node_base::COMMENT_NODE, levelNodes[i]); for (int j = 0; j < comments.size(); j++) { PromelaInline* tmp = new PromelaInline(comments[j]); if (tmp->type == PromelaInline::PROMELA_NIL) { @@ -1864,7 +1865,7 @@ PromelaInlines::PromelaInlines(const Arabica::DOM::Node<std::string>& node) { } } - levelNodes = InterpreterImpl::filterChildType(Node_base::ELEMENT_NODE, levelNodes); + levelNodes = DOMUtils::filterChildType(Node_base::ELEMENT_NODE, levelNodes); level++; } } @@ -2191,7 +2192,7 @@ void ChartToPromela::writeStartInvoker(std::ostream& stream, const Arabica::DOM: } // set from params - NodeSet<std::string> invokeParams = filterChildElements(_nsInfo.xmlNSPrefix + "param", node); + NodeSet<std::string> invokeParams = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "param", node); for (int i = 0; i < invokeParams.size(); i++) { std::string identifier = ATTR_CAST(invokeParams[i], "name"); std::string expression = ATTR_CAST(invokeParams[i], "expr"); @@ -2218,10 +2219,10 @@ void ChartToPromela::writeFSM(std::ostream& stream) { stream << " " << _prefix << "procid = _pid;" << std::endl; stream << " }" << std::endl; // write initial transition -// transitions = filterChildElements(_nsInfo.xmlNSPrefix + "transition", _startState); +// transitions = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _startState); // assert(transitions.size() == 1); - NodeSet<std::string> scripts = filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml, false); + NodeSet<std::string> scripts = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml, false); if (scripts.size() > 0) { stream << std::endl << "/* global scripts */" << std::endl; for (int i = 0; i < scripts.size(); i++) { @@ -2336,14 +2337,14 @@ void ChartToPromela::writeFSM(std::ostream& stream) { excludeEventDescs += " " + evIter->atom; } - NodeSet<std::string> transitions = filterChildElements("transition", es.container, true); + NodeSet<std::string> transitions = DOMUtils::filterChildElements("transition", es.container, true); std::set<std::string> eventNames; for (int i = 0; i < transitions.size(); i++) { if (!HAS_ATTR_CAST(transitions[i], "event")) continue; if (HAS_ATTR_CAST(transitions[i], "cond") && ATTR_CAST(transitions[i], "cond").find("_event.") != std::string::npos) continue; - std::list<std::string> events = InterpreterImpl::tokenizeIdRefs(ATTR_CAST(transitions[i], "event")); + std::list<std::string> events = tokenize(ATTR_CAST(transitions[i], "event")); for (std::list<std::string>::iterator evIter = events.begin(); evIter != events.end(); evIter++) { std::string eventName = *evIter; if (boost::ends_with(eventName, "*")) @@ -2352,7 +2353,7 @@ void ChartToPromela::writeFSM(std::ostream& stream) { eventName = eventName.substr(0, eventName.size() - 1); // is this event excluded? - if (!InterpreterImpl::nameMatch(excludeEventDescs, eventName)) { + if (!nameMatch(excludeEventDescs, eventName)) { eventNames.insert(eventName); } } @@ -2404,7 +2405,7 @@ void ChartToPromela::writeFSM(std::ostream& stream) { { bool finalizeFound = false; for (std::map<Arabica::DOM::Node<std::string>, ChartToPromela*>::iterator invIter = _machines.begin(); invIter != _machines.end(); invIter++) { - NodeSet<std::string> finalizes = filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invIter->first, false); + NodeSet<std::string> finalizes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invIter->first, false); if (finalizes.size() > 0) { finalizeFound = true; break; @@ -2414,7 +2415,7 @@ void ChartToPromela::writeFSM(std::ostream& stream) { stream << "/* <finalize> event */" << std::endl; stream << " if" << std::endl; for (std::map<Arabica::DOM::Node<std::string>, ChartToPromela*>::iterator invIter = _machines.begin(); invIter != _machines.end(); invIter++) { - NodeSet<std::string> finalizes = filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invIter->first, false); + NodeSet<std::string> finalizes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invIter->first, false); if (finalizes.size() > 0) { stream << " :: " << _prefix << "_event.invokeid == " << _analyzer->macroForLiteral(invIter->second->_invokerid) << " -> {" << std::endl; writeExecutableContent(stream, finalizes[0], 3); @@ -2841,7 +2842,7 @@ void ChartToPromela::writeDispatchingBlock(std::ostream& stream, std::list<Globa } else { std::string eventDescs = currTrans->eventDesc; - std::list<std::string> eventNames = tokenizeIdRefs(eventDescs); + std::list<std::string> eventNames = tokenize(eventDescs); std::set<std::string> eventPrefixes; std::list<std::string>::iterator eventNameIter = eventNames.begin(); while(eventNameIter != eventNames.end()) { @@ -2987,8 +2988,8 @@ void ChartToPromela::initNodes() { { // shorten UUID ids at invokers for readability - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); - invokes.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "uninvoke", _scxml, true)); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + invokes.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "uninvoke", _scxml, true)); // make sure all invokers have an id! for (int i = 0; i < invokes.size(); i++) { @@ -3006,7 +3007,7 @@ void ChartToPromela::initNodes() { // are there nestes SCXML invokers? { - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); for (int i = 0; i < invokes.size(); i++) { if (!HAS_ATTR_CAST(invokes[i], "type") || ATTR_CAST(invokes[i], "type") == "scxml" || @@ -3023,9 +3024,9 @@ void ChartToPromela::initNodes() { nested = Interpreter::fromURL(absUrl); } else { - NodeSet<std::string> nestedContent = InterpreterImpl::filterChildElements(_nsInfo.xmlNSPrefix + "content", invokes[i]); + NodeSet<std::string> nestedContent = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", invokes[i]); assert(nestedContent.size() == 1); - NodeSet<std::string> nestedRoot = InterpreterImpl::filterChildElements(_nsInfo.xmlNSPrefix + "scxml", nestedContent[0]); + NodeSet<std::string> nestedRoot = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "scxml", nestedContent[0]); assert(nestedRoot.size() == 1); DOMImplementation<std::string> domFactory = Arabica::SimpleDOM::DOMImplementation<std::string>::getDOMImplementation(); @@ -3070,9 +3071,9 @@ void ChartToPromela::initNodes() { while(histIter != _historyTargets.end()) { NodeSet<std::string> histStatesMembers; bool isDeep = (HAS_ATTR_CAST(histIter->second, "type") && ATTR_CAST(histIter->second, "type") == "deep"); - histStatesMembers.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "state", histIter->second.getParentNode(), isDeep)); - histStatesMembers.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "parallel", histIter->second.getParentNode(), isDeep)); - histStatesMembers.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "final", histIter->second.getParentNode(), isDeep)); + histStatesMembers.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "state", histIter->second.getParentNode(), isDeep)); + histStatesMembers.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "parallel", histIter->second.getParentNode(), isDeep)); + histStatesMembers.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "final", histIter->second.getParentNode(), isDeep)); for (int i = 0; i < histStatesMembers.size(); i++) { _historyMembers[histIter->first].insert(std::make_pair(ATTR_CAST(histStatesMembers[i], "id"), i)); @@ -3089,7 +3090,7 @@ void ChartToPromela::initNodes() { for (int i = 0; i < internalEventNames.size(); i++) { if (HAS_ATTR_CAST(internalEventNames[i], "event")) { std::string eventNames = ATTR_CAST(internalEventNames[i], "event"); - std::list<std::string> events = tokenizeIdRefs(eventNames); + std::list<std::string> events = tokenize(eventNames); for (std::list<std::string>::iterator eventIter = events.begin(); eventIter != events.end(); eventIter++) { std::string eventName = *eventIter; @@ -3109,8 +3110,8 @@ void ChartToPromela::initNodes() { // transform data / assign json into PROMELA statements { NodeSet<std::string> asgn; - asgn.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true)); - asgn.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "assign", _scxml, true)); + asgn.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true)); + asgn.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "assign", _scxml, true)); for (int i = 0; i < asgn.size(); i++) { if (isInEmbeddedDocument(asgn[i])) @@ -3136,7 +3137,7 @@ void ChartToPromela::initNodes() { absUrl.toAbsolute(_baseURL[_scxml]); value = absUrl.getInContent(); } else { - NodeSet<std::string> textChilds = filterChildType(Node_base::TEXT_NODE, asgnElem); + NodeSet<std::string> textChilds = DOMUtils::filterChildType(Node_base::TEXT_NODE, asgnElem); if (textChilds.size() > 0) { for (int j = 0; j < textChilds.size(); j++) { value += textChilds[j].getNodeValue(); @@ -3171,9 +3172,9 @@ void ChartToPromela::initNodes() { // do we need sendid / invokeid? { - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); - NodeSet<std::string> sends = filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true); - NodeSet<std::string> cancels = filterChildElements(_nsInfo.xmlNSPrefix + "cancel", _scxml, true); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + NodeSet<std::string> sends = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true); + NodeSet<std::string> cancels = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "cancel", _scxml, true); if (cancels.size() > 0) { _analyzer->addCode("_event.invokeid", this); @@ -3204,11 +3205,11 @@ void ChartToPromela::initNodes() { { // string literals for raise / send content NodeSet<std::string> withContent; - withContent.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true)); - withContent.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "raise", _scxml, true)); + withContent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true)); + withContent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "raise", _scxml, true)); for (int i = 0; i < withContent.size(); i++) { - NodeSet<std::string> content = filterChildElements(_nsInfo.xmlNSPrefix + "content", withContent[i], true); + NodeSet<std::string> content = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", withContent[i], true); for (int j = 0; j < content.size(); j++) { Element<std::string> contentElem(content[j]); std::string content = spaceNormalize(contentElem.getFirstChild().getNodeValue()); @@ -3264,7 +3265,7 @@ void ChartToPromela::initNodes() { _analyzer->addLiteral(ATTR(_scxml, "name"), _analyzer->indexForLiteral(_prefix + "_sessionid")); } - NodeSet<std::string> contents = filterChildElements(_nsInfo.xmlNSPrefix + "content", _scxml, true); + NodeSet<std::string> contents = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", _scxml, true); for (int i = 0; i < contents.size(); i++) { Element<std::string> contentElem = Element<std::string>(contents[i]); if (contentElem.hasChildNodes() && contentElem.getFirstChild().getNodeType() == Node_base::TEXT_NODE && contentElem.getChildNodes().getLength() == 1) { @@ -3279,9 +3280,9 @@ void ChartToPromela::initNodes() { std::set<std::string> allStrings; { NodeSet<std::string> withCond; - withCond.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true)); - withCond.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "if", _scxml, true)); - withCond.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "elseif", _scxml, true)); + withCond.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true)); + withCond.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "if", _scxml, true)); + withCond.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "elseif", _scxml, true)); for (int i = 0; i < withCond.size(); i++) { Element<std::string> elem = Element<std::string>(withCond[i]); if (HAS_ATTR(elem, "cond")) { @@ -3294,11 +3295,11 @@ void ChartToPromela::initNodes() { } { NodeSet<std::string> withExpr; - withExpr.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "log", _scxml, true)); - withExpr.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true)); - withExpr.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "assign", _scxml, true)); - withExpr.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "content", _scxml, true)); - withExpr.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "param", _scxml, true)); + withExpr.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "log", _scxml, true)); + withExpr.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true)); + withExpr.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "assign", _scxml, true)); + withExpr.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "content", _scxml, true)); + withExpr.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "param", _scxml, true)); for (int i = 0; i < withExpr.size(); i++) { Element<std::string> elem = Element<std::string>(withExpr[i]); if (HAS_ATTR(elem, "expr")) { @@ -3311,7 +3312,7 @@ void ChartToPromela::initNodes() { } { NodeSet<std::string> withLocation; - withLocation.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "assign", _scxml, true)); + withLocation.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "assign", _scxml, true)); for (int i = 0; i < withLocation.size(); i++) { Element<std::string> elem = Element<std::string>(withLocation[i]); if (HAS_ATTR(elem, "location")) { @@ -3324,10 +3325,10 @@ void ChartToPromela::initNodes() { } { NodeSet<std::string> withText; - withText.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml, true)); -// withText.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true)); + withText.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml, true)); +// withText.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "data", _scxml, true)); for (int i = 0; i < withText.size(); i++) { - NodeSet<std::string> texts = filterChildType(Node_base::TEXT_NODE, withText[i], true); + NodeSet<std::string> texts = DOMUtils::filterChildType(Node_base::TEXT_NODE, withText[i], true); for (int j = 0; j < texts.size(); j++) { if (texts[j].getNodeValue().size() > 0) { Text<std::string> elem = Text<std::string>(texts[j]); @@ -3340,7 +3341,7 @@ void ChartToPromela::initNodes() { } } { - NodeSet<std::string> foreachs = filterChildElements(_nsInfo.xmlNSPrefix + "foreach", _scxml, true); + NodeSet<std::string> foreachs = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "foreach", _scxml, true); for (int i = 0; i < foreachs.size(); i++) { if (HAS_ATTR_CAST(foreachs[i], "index")) { allCode.insert(ATTR_CAST(foreachs[i], "index")); @@ -3359,12 +3360,12 @@ void ChartToPromela::initNodes() { // add all namelist entries to the _event structure { NodeSet<std::string> withNamelist; - withNamelist.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true)); - withNamelist.push_back(filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true)); + withNamelist.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true)); + withNamelist.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true)); for (int i = 0; i < withNamelist.size(); i++) { if (HAS_ATTR_CAST(withNamelist[i], "namelist")) { std::string namelist = ATTR_CAST(withNamelist[i], "namelist"); - std::list<std::string> names = tokenizeIdRefs(namelist); + std::list<std::string> names = tokenize(namelist); for (std::list<std::string>::iterator nameIter = names.begin(); nameIter != names.end(); nameIter++) { _analyzer->addCode("_event.data." + *nameIter + " = 0;", this); // introduce for _event_t typedef } @@ -3531,14 +3532,14 @@ void ChartToPromela::writeProgram(std::ostream& stream) { } { - NodeSet<std::string> cancels = filterChildElements(_nsInfo.xmlNSPrefix + "cancel", _scxml, true); + NodeSet<std::string> cancels = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "cancel", _scxml, true); if (cancels.size() > 0) { writeCancelEvents(stream); stream << std::endl; } } { - NodeSet<std::string> invokes = filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); + NodeSet<std::string> invokes = DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "invoke", _scxml, true); if (invokes.size() > 0 && _analyzer->usesEventField("delay")) { writeRemovePendingEventsFromInvoker(stream); stream << std::endl; diff --git a/src/uscxml/transform/ChartToPromela.h b/src/uscxml/transform/ChartToPromela.h index d289436..82c4e5d 100644 --- a/src/uscxml/transform/ChartToPromela.h +++ b/src/uscxml/transform/ChartToPromela.h @@ -23,7 +23,7 @@ #include "Transformer.h" #include "ChartToFSM.h" #include "uscxml/interpreter/InterpreterDraft6.h" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include "uscxml/util/Trie.h" #include <DOM/Document.hpp> diff --git a/src/uscxml/transform/ChartToTex.h b/src/uscxml/transform/ChartToTex.h index 037b55c..de3743e 100644 --- a/src/uscxml/transform/ChartToTex.h +++ b/src/uscxml/transform/ChartToTex.h @@ -24,7 +24,7 @@ #include "Transformer.h" #include "ChartToFSM.h" #include "uscxml/Interpreter.h" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include "uscxml/util/Trie.h" #include <DOM/Document.hpp> diff --git a/src/uscxml/transform/ChartToVHDL.cpp b/src/uscxml/transform/ChartToVHDL.cpp index f37ad7e..52f1a5c 100644 --- a/src/uscxml/transform/ChartToVHDL.cpp +++ b/src/uscxml/transform/ChartToVHDL.cpp @@ -22,7 +22,7 @@ #include <DOM/io/Stream.hpp> #include <iostream> #include "uscxml/UUID.h" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include <math.h> #include <boost/algorithm/string.hpp> #include <glog/logging.h> @@ -103,9 +103,9 @@ void ChartToVHDL::checkDocument() { void ChartToVHDL::findEvents() { // elements with an event attribute NodeSet<std::string> withEvent; - withEvent.push_back(InterpreterImpl::filterChildElements(_nsInfo.xmlNSPrefix + "raise", _scxml, true)); - withEvent.push_back(InterpreterImpl::filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true)); - withEvent.push_back(InterpreterImpl::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true)); + withEvent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "raise", _scxml, true)); + withEvent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "send", _scxml, true)); + withEvent.push_back(DOMUtils::filterChildElements(_nsInfo.xmlNSPrefix + "transition", _scxml, true)); for (size_t i = 0; i < withEvent.size(); i++) { if (HAS_ATTR_CAST(withEvent[i], "event")) { @@ -479,7 +479,7 @@ void ChartToVHDL::writeOptimalTransitionSetSelection(std::ostream & stream) { stream << " and ( '0' " << std::endl;; // find all matching event literals - std::list<std::string> eventDescs = tokenizeIdRefs(ATTR(transition, "event")); + std::list<std::string> eventDescs = tokenize(ATTR(transition, "event")); for (std::list<std::string>::iterator descIter = eventDescs.begin(); descIter != eventDescs.end(); descIter++) { std::list<TrieNode*> eventNames = _eventTrie.getWordsWithPrefix((*descIter) == "*" ? "" : *descIter); for (std::list<TrieNode*>::iterator eventIter = eventNames.begin(); eventIter != eventNames.end(); eventIter++) { diff --git a/src/uscxml/transform/ChartToVHDL.h b/src/uscxml/transform/ChartToVHDL.h index abcb477..c2dec15 100644 --- a/src/uscxml/transform/ChartToVHDL.h +++ b/src/uscxml/transform/ChartToVHDL.h @@ -21,7 +21,7 @@ #define CHARTOVHDL_H #include "uscxml/interpreter/InterpreterDraft6.h" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include "uscxml/util/Trie.h" #include "Transformer.h" #include "ChartToC.h" diff --git a/src/uscxml/transform/FlatStateIdentifier.h b/src/uscxml/transform/FlatStateIdentifier.h index 4afd956..99ae084 100644 --- a/src/uscxml/transform/FlatStateIdentifier.h +++ b/src/uscxml/transform/FlatStateIdentifier.h @@ -22,7 +22,7 @@ #include "uscxml/Common.h" #include "uscxml/Convenience.h" -#include "uscxml/DOMUtils.h" +#include "uscxml/dom/DOMUtils.h" #include <XPath/XPath.hpp> |