diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-10-26 23:34:56 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-10-26 23:34:56 (GMT) |
commit | cb4356f33044fd42958cdede5dfe93ef4516173a (patch) | |
tree | ecd4f0afd4f1b7948bf765650ae5454d5581b4d3 /src/uscxml/plugins/datamodel/ecmascript | |
parent | 16f401a90436a0f86af887c5e0fe212820cd5e3c (diff) | |
download | uscxml-cb4356f33044fd42958cdede5dfe93ef4516173a.zip uscxml-cb4356f33044fd42958cdede5dfe93ef4516173a.tar.gz uscxml-cb4356f33044fd42958cdede5dfe93ef4516173a.tar.bz2 |
Nested XML Node with event
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript')
-rw-r--r-- | src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp | 7 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp index 4a4a6e7..c737d16 100644 --- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp +++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp @@ -376,10 +376,15 @@ Data JSCDataModel::getValueAsData(const JSValueRef value) { if (exception) handleException(exception); if (JSValueIsObjectOfClass(_ctx, value, JSCArrayBuffer::getTmpl())) { - // binary data! + // binary data JSCArrayBuffer::JSCArrayBufferPrivate* privObj = (JSCArrayBuffer::JSCArrayBufferPrivate*)JSObjectGetPrivate(objValue); data.binary = privObj->nativeObj->_buffer; return data; + } else if (JSValueIsObjectOfClass(_ctx, value, JSCNode::getTmpl())) { + // dom node + JSCNode::JSCNodePrivate* privObj = (JSCNode::JSCNodePrivate*)JSObjectGetPrivate(objValue); + data.node = *privObj->nativeObj; + return data; } std::set<std::string> propertySet; JSPropertyNameArrayRef properties = JSObjectCopyPropertyNames(_ctx, objValue); diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp index b0ffcea..a0de760 100644 --- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp +++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp @@ -324,6 +324,11 @@ Data V8DataModel::getValueAsData(const v8::Handle<v8::Value>& value, std::set<v8 data.binary = privObj->nativeObj->_buffer; return data; } + if (V8Node::hasInstance(value)) { + uscxml::V8Node::V8NodePrivate* privObj = V8DOM::toClassPtr<V8Node::V8NodePrivate >(value->ToObject()->GetInternalField(0)); + data.node = *privObj->nativeObj; + return data; + } v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value); v8::Local<v8::Array> properties = object->GetPropertyNames(); for (int i = 0; i < properties->Length(); i++) { |