summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/v8
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-04-10 20:57:11 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-04-10 20:57:11 (GMT)
commit45ab2909e17f7e0348ccfe4179f23a897a2fd305 (patch)
tree7a5dfe75657034659e45431469b3909cb69db035 /src/uscxml/plugins/datamodel/ecmascript/v8
parent1c7064006d4283ffbfa64febea397e68df8e2b54 (diff)
downloaduscxml-45ab2909e17f7e0348ccfe4179f23a897a2fd305.zip
uscxml-45ab2909e17f7e0348ccfe4179f23a897a2fd305.tar.gz
uscxml-45ab2909e17f7e0348ccfe4179f23a897a2fd305.tar.bz2
New DataModels
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/v8')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp14
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h30
2 files changed, 37 insertions, 7 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index 0146a31..2491fc4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -392,7 +392,9 @@ double V8DataModel::evalAsNumber(const std::string& expr) {
return 0;
}
-void V8DataModel::assign(const std::string& location, const Arabica::DOM::Document<std::string>& doc) {
+void V8DataModel::assign(const std::string& location,
+ const Arabica::DOM::Document<std::string>& doc,
+ const Arabica::DOM::Element<std::string>& dataElem) {
v8::Locker locker;
v8::HandleScope handleScope;
v8::Context::Scope contextScope(_contexts.front());
@@ -402,17 +404,21 @@ void V8DataModel::assign(const std::string& location, const Arabica::DOM::Docume
}
-void V8DataModel::assign(const std::string& location, const Data& data) {
+void V8DataModel::assign(const std::string& location,
+ const Data& data,
+ const Arabica::DOM::Element<std::string>& dataElem) {
v8::Locker locker;
v8::HandleScope handleScope;
v8::Context::Scope contextScope(_contexts.front());
std::stringstream ssJSON;
ssJSON << data;
- assign(location, ssJSON.str());
+ assign(location, ssJSON.str(), dataElem);
}
-void V8DataModel::assign(const std::string& location, const std::string& expr) {
+void V8DataModel::assign(const std::string& location,
+ const std::string& expr,
+ const Arabica::DOM::Element<std::string>& dataElem) {
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 760b638..7bea50c 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
@@ -39,10 +39,34 @@ public:
virtual void pushContext();
virtual void popContext();
+ virtual bool supportsJSON() { return true; }
+
virtual void eval(const std::string& expr);
- virtual void assign(const std::string& location, const Arabica::DOM::Document<std::string>& doc);
- virtual void assign(const std::string& location, const std::string& expr);
- virtual void assign(const std::string& location, const Data& data);
+ virtual void assign(const std::string& location,
+ const Arabica::DOM::Document<std::string>& doc,
+ const Arabica::DOM::Element<std::string>& assignElem);
+ virtual void assign(const std::string& location,
+ const std::string& expr,
+ const Arabica::DOM::Element<std::string>& assignElem);
+ virtual void assign(const std::string& location,
+ const Data& data,
+ const Arabica::DOM::Element<std::string>& assignElem);
+
+ virtual void init(const std::string& location,
+ const Arabica::DOM::Document<std::string>& doc,
+ const Arabica::DOM::Element<std::string>& dataElem) {
+ assign(location, doc, dataElem);
+ };
+ virtual void init(const std::string& location,
+ const std::string& expr,
+ const Arabica::DOM::Element<std::string>& dataElem) {
+ assign(location, expr, dataElem);
+ }
+ virtual void init(const std::string& location,
+ const Data& data,
+ const Arabica::DOM::Element<std::string>& dataElem) {
+ assign(location, data, dataElem);
+ }
virtual Data getStringAsData(const std::string& content);
virtual Data getValueAsData(const v8::Handle<v8::Value>& value);