diff options
Diffstat (limited to 'src/uscxml/transform/ChartToPromela.cpp')
-rw-r--r-- | src/uscxml/transform/ChartToPromela.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/uscxml/transform/ChartToPromela.cpp b/src/uscxml/transform/ChartToPromela.cpp index ea83784..9b6674d 100644 --- a/src/uscxml/transform/ChartToPromela.cpp +++ b/src/uscxml/transform/ChartToPromela.cpp @@ -2267,6 +2267,21 @@ void ChartToPromela::initNodes() { _analyzer.addCode(*codeIter); } + // 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)); + 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); + for (std::list<std::string>::iterator nameIter = names.begin(); nameIter != names.end(); nameIter++) { + _analyzer.addCode("_event.data." + *nameIter + " = 0;"); // introduce for _event_t typedef + } + } + } + } } std::string ChartToPromela::sanitizeCode(const std::string& code) { |