summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2015-01-19 16:41:18 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2015-01-19 16:41:18 (GMT)
commitff86d690dc02d7dd495000331d378e7d8eb688ac (patch)
tree5214786f7e575952d3cba0919e5071f3a783050b /src/uscxml/plugins/datamodel
parent42437db418574f2a80d098e568b9498a21343800 (diff)
downloaduscxml-ff86d690dc02d7dd495000331d378e7d8eb688ac.zip
uscxml-ff86d690dc02d7dd495000331d378e7d8eb688ac.tar.gz
uscxml-ff86d690dc02d7dd495000331d378e7d8eb688ac.tar.bz2
Plenty of smaller fixes and adaptations
Diffstat (limited to 'src/uscxml/plugins/datamodel')
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp12
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
index 679177a..2621c66 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
@@ -211,6 +211,16 @@ bool PromelaDataModel::isLocation(const std::string& expr) {
return true;
}
+bool PromelaDataModel::isValidSyntax(const std::string& expr) {
+ try {
+ PromelaParser parser(expr);
+ } catch (Event e) {
+ std::cerr << e << std::endl;
+ return false;
+ }
+ return true;
+}
+
uint32_t PromelaDataModel::getLength(const std::string& expr) {
if (!isDeclared(expr)) {
ERROR_EXECUTION_THROW("Variable '" + expr + "' was not declared");
@@ -593,7 +603,7 @@ void PromelaDataModel::setVariable(void* ast, const Data& value) {
if (value.compound.size() > 0 || value.atom.size() > 0)
ERROR_EXECUTION_THROW("Variable " + node->value + " is an array");
- if (_variables[node->value].compound["size"] < value.array.size())
+ if (strTo<size_t>(_variables[node->value].compound["size"].atom) < value.array.size())
ERROR_EXECUTION_THROW("Array assigned to " + node->value + " is too large");
}
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
index 581c761..25fe536 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
@@ -47,6 +47,7 @@ public:
virtual bool validate(const std::string& location, const std::string& schema);
virtual bool isLocation(const std::string& expr);
+ virtual bool isValidSyntax(const std::string& expr);
virtual uint32_t getLength(const std::string& expr);
virtual void setForeach(const std::string& item,