diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-09-01 20:51:59 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-09-01 20:51:59 (GMT) |
commit | ddd9db10907ee4cee6c44b24b96d81b062521752 (patch) | |
tree | dad93a6003344852c61d5916c8fbc11ab88ad9ed /src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp | |
parent | fd0778237785840ec754f98e847a524590cbf61c (diff) | |
download | uscxml-ddd9db10907ee4cee6c44b24b96d81b062521752.zip uscxml-ddd9db10907ee4cee6c44b24b96d81b062521752.tar.gz uscxml-ddd9db10907ee4cee6c44b24b96d81b062521752.tar.bz2 |
Added Data::BINARY and compile fixes for non MacOSX platforms
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp')
-rw-r--r-- | src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp index aef41ca..919f4a1 100644 --- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp +++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp @@ -350,11 +350,29 @@ v8::Handle<v8::Value> V8DataModel::getDataAsValue(const Data& data) { } return value; } - if (data.type == Data::VERBATIM) { - return v8::String::New(data.atom.c_str()); - } else { - return evalAsValue(data.atom); + switch (data.type) { + case Data::VERBATIM: + return v8::String::New(data.atom.c_str()); + break; + case Data::INTERPRETED: + return evalAsValue(data.atom); + break; + case Data::BINARY: { + uscxml::ArrayBuffer* arrBuffer = new uscxml::ArrayBuffer((void*)data.atom.c_str(), data.atom.size()); + v8::Handle<v8::Function> retCtor = V8ArrayBuffer::getTmpl()->GetFunction(); + v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance()); + + struct V8ArrayBuffer::V8ArrayBufferPrivate* retPrivData = new V8ArrayBuffer::V8ArrayBufferPrivate(); + retPrivData->nativeObj = arrBuffer; + retObj->SetInternalField(0, V8DOM::toExternal(retPrivData)); + + retObj.MakeWeak(0, V8ArrayBuffer::jsDestructor); + return retObj; + break; + } } + // this will never be reached + return v8::Undefined(); } v8::Handle<v8::Value> V8DataModel::jsPrint(const v8::Arguments& args) { |