summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-07-03 11:31:35 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-07-03 11:31:35 (GMT)
commit67f8e8b4106eb20ce0bc01fd840b0d8e4319cb36 (patch)
tree42ba94ef35bf70d74ebb8dcc03e01752874a6540 /src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
parentb542369263782dc8b85893e218119ed070efa7b3 (diff)
downloaduscxml-67f8e8b4106eb20ce0bc01fd840b0d8e4319cb36.zip
uscxml-67f8e8b4106eb20ce0bc01fd840b0d8e4319cb36.tar.gz
uscxml-67f8e8b4106eb20ce0bc01fd840b0d8e4319cb36.tar.bz2
Introduced isLocation for datamodels to check for valid namelist entries
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index 6dc8c26..73a3744 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -482,6 +482,19 @@ void JSCDataModel::setForeach(const std::string& item,
}
}
+bool JSCDataModel::isLocation(const std::string& expr) {
+ JSStringRef scriptJS = JSStringCreateWithUTF8CString((expr + "++").c_str());
+ JSValueRef exception = NULL;
+ bool valid = JSCheckScriptSyntax(_ctx, scriptJS, NULL, 0, &exception);
+ JSStringRelease(scriptJS);
+
+ if (exception || !valid) {
+ return false;
+ }
+ return true;
+}
+
+
bool JSCDataModel::isDeclared(const std::string& expr) {
JSStringRef scriptJS = JSStringCreateWithUTF8CString(expr.c_str());
JSValueRef exception = NULL;