diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-04-10 20:57:11 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-04-10 20:57:11 (GMT) |
commit | 45ab2909e17f7e0348ccfe4179f23a897a2fd305 (patch) | |
tree | 7a5dfe75657034659e45431469b3909cb69db035 /src/uscxml/plugins/datamodel/ecmascript/v8 | |
parent | 1c7064006d4283ffbfa64febea397e68df8e2b54 (diff) | |
download | uscxml-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.cpp | 14 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h | 30 |
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); |