summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/v8
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-10-27 20:26:07 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-10-27 20:26:07 (GMT)
commit0a9c4c2e8f10de0323503fd5f2b11f31314b380c (patch)
tree2d5f6c0659df463b103fe376af72ce5ab173b5cf /src/uscxml/plugins/datamodel/ecmascript/v8
parent1e42b29439d247598d58aac10f62c77cf2f31f12 (diff)
downloaduscxml-0a9c4c2e8f10de0323503fd5f2b11f31314b380c.zip
uscxml-0a9c4c2e8f10de0323503fd5f2b11f31314b380c.tar.gz
uscxml-0a9c4c2e8f10de0323503fd5f2b11f31314b380c.tar.bz2
Added XML node to DataModel::evalAsBool signature to enable script caching
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/v8')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h8
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp4
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h1
3 files changed, 10 insertions, 3 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h
index 2fa5b81..7030469 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h
@@ -60,12 +60,14 @@ public:
else if(!data->IsExternal())
return NULL;
else
- return static_cast<T *>(v8::External::Unwrap(data));
+ return v8::External::Cast(*data)->Value();
+// return static_cast<T *>(v8::External::Unwrap(data));
return NULL;
}
static v8::Local<v8::External> toExternal(void* pointer) {
- v8::HandleScope scope;
- return scope.Close(v8::External::New(pointer));
+// v8::HandleScope scope;
+// return scope.Close(v8::External::New(pointer));
+ return v8::External::New(pointer);
}
Arabica::XPath::XPath<std::string>* xpath;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index a0de760..1037802 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -518,6 +518,10 @@ bool V8DataModel::isDeclared(const std::string& expr) {
}
bool V8DataModel::evalAsBool(const std::string& expr) {
+ return evalAsBool(Arabica::DOM::Node<std::string>(), expr);
+}
+
+bool V8DataModel::evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr) {
v8::Locker locker;
v8::HandleScope handleScope;
v8::Context::Scope contextScope(_contexts.back());
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
index 17ca7bc..0a64a2e 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
@@ -88,6 +88,7 @@ public:
virtual bool isDeclared(const std::string& expr);
virtual std::string evalAsString(const std::string& expr);
+ virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr);
virtual bool evalAsBool(const std::string& expr);
virtual double evalAsNumber(const std::string& expr);