summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-09-01 20:51:59 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-09-01 20:51:59 (GMT)
commitddd9db10907ee4cee6c44b24b96d81b062521752 (patch)
treedad93a6003344852c61d5916c8fbc11ab88ad9ed /src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
parentfd0778237785840ec754f98e847a524590cbf61c (diff)
downloaduscxml-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.cpp26
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) {