summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/v8
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-09-01 19:18:36 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-09-01 19:18:36 (GMT)
commitfd0778237785840ec754f98e847a524590cbf61c (patch)
treeebf4609be11843f9657810515d47faa3873c2db8 /src/uscxml/plugins/datamodel/ecmascript/v8
parent99d2c52f1068b2dd4bd16b8c1c8231beeb94a649 (diff)
downloaduscxml-fd0778237785840ec754f98e847a524590cbf61c.zip
uscxml-fd0778237785840ec754f98e847a524590cbf61c.tar.gz
uscxml-fd0778237785840ec754f98e847a524590cbf61c.tar.bz2
More work on TypedArrays
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/v8')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp26
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.cpp94
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.h13
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBufferView.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.cpp96
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.cpp112
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.cpp448
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.h12
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.cpp407
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.cpp353
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.cpp209
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.cpp203
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.cpp31
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.cpp10
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.cpp1
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp69
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.cpp29
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8TypedArrayCustom.cpp144
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.cpp178
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.h19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.cpp53
46 files changed, 3031 insertions, 1062 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index ea112f1..aef41ca 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -9,6 +9,18 @@
#include "dom/V8CDATASection.h"
#include "dom/V8SCXMLEvent.h"
+#include "dom/V8ArrayBuffer.h"
+#include "dom/V8Int8Array.h"
+#include "dom/V8Uint8Array.h"
+#include "dom/V8Uint8ClampedArray.h"
+#include "dom/V8Int16Array.h"
+#include "dom/V8Uint16Array.h"
+#include "dom/V8Int32Array.h"
+#include "dom/V8Uint32Array.h"
+#include "dom/V8Float32Array.h"
+#include "dom/V8Float64Array.h"
+#include "dom/V8DataView.h"
+
#include "uscxml/Message.h"
#include <glog/logging.h>
@@ -86,6 +98,20 @@ boost::shared_ptr<DataModelImpl> V8DataModel::create(InterpreterImpl* interprete
context->Global()->Set(v8::String::New("document"), docObj);
+ // setup constructors
+ context->Global()->Set(v8::String::New("ArrayBuffer"), V8ArrayBuffer::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Int8Array"), V8Int8Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Uint8Array"), V8Uint8Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Uint8ClampedArray"), V8Uint8ClampedArray::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Int16Array"), V8Int16Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Uint16Array"), V8Uint16Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Int32Array"), V8Int32Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Uint32Array"), V8Uint32Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Float32Array"), V8Float32Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("Float64Array"), V8Float64Array::getConstructor()->GetFunction());
+ context->Global()->Set(v8::String::New("DataView"), V8DataView::getConstructor()->GetFunction());
+
+
context->Global()->SetAccessor(v8::String::New("_sessionid"),
V8DataModel::getAttribute,
V8DataModel::setWithException,
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.cpp
index d4146fe..ce51887 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.cpp
@@ -4,7 +4,37 @@ namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8ArrayBuffer::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8ArrayBuffer::Constr;
+v8::Handle<v8::Value> V8ArrayBuffer::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::ArrayBuffer* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::ArrayBuffer(localLength);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for ArrayBuffer");
+ return v8::Undefined();
+ }
+
+ 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 = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8ArrayBuffer::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8ArrayBuffer::byteLengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,43 +42,69 @@ v8::Handle<v8::Value> V8ArrayBuffer::byteLengthAttrGetter(v8::Local<v8::String>
return v8::Integer::New(privData->nativeObj->getByteLength());
}
+
v8::Handle<v8::Value> V8ArrayBuffer::sliceCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in slice");
v8::Local<v8::Object> self = args.Holder();
struct V8ArrayBufferPrivate* privData = V8DOM::toClassPtr<V8ArrayBufferPrivate >(self->GetInternalField(0));
- long localBegin = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localBegin = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::ArrayBuffer* retVal = new uscxml::ArrayBuffer(privData->nativeObj->slice(localBegin, localEnd));
- v8::Handle<v8::Function> retCtor = V8ArrayBuffer::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::ArrayBuffer* retVal = new uscxml::ArrayBuffer(privData->nativeObj->slice(localBegin, localEnd));
+ 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->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8ArrayBuffer::V8ArrayBufferPrivate* retPrivData = new V8ArrayBuffer::V8ArrayBufferPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8ArrayBuffer::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8ArrayBuffer::jsDestructor);
+ return retObj;
+ } else if (args.Length() == 1 &&
+ args[0]->IsInt32()) {
+ long localBegin = args[0]->ToNumber()->Int32Value();
+
+ uscxml::ArrayBuffer* retVal = new uscxml::ArrayBuffer(privData->nativeObj->slice(localBegin));
+ 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->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8ArrayBuffer::jsDestructor);
+ return retObj;
+
+ }
+ throw V8Exception("Parameter mismatch while calling slice");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8ArrayBuffer::isViewCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in isView");
v8::Local<v8::Object> self = args.Holder();
struct V8ArrayBufferPrivate* privData = V8DOM::toClassPtr<V8ArrayBufferPrivate >(self->GetInternalField(0));
- void* localValue = v8::External::Unwrap(args[0]->ToObject()->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 1 &&
+ true) {
+ void* localValue = v8::External::Unwrap(args[0]->ToObject()->GetInternalField(0));
- bool retVal = privData->nativeObj->isView(localValue);
+ bool retVal = privData->nativeObj->isView(localValue);
- return v8::Boolean::New(retVal);
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling isView");
+ return v8::Undefined();
}
-
bool V8ArrayBuffer::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.h
index 3399575..d4229eb 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBuffer.h
@@ -45,6 +45,18 @@ public:
static v8::Handle<v8::Value> isViewCallback(const v8::Arguments&);
static v8::Handle<v8::Value> byteLengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -62,6 +74,7 @@ public:
instance->SetAccessor(v8::String::NewSymbol("byteLength"), V8ArrayBuffer::byteLengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8ArrayBuffer::indexedPropertyCustomGetter, V8ArrayBuffer::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("slice"),
v8::FunctionTemplate::New(V8ArrayBuffer::sliceCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("isView"),
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBufferView.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBufferView.cpp
index ff0b744..562b9f3 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBufferView.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ArrayBufferView.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8ArrayBufferView::Tmpl;
-
v8::Handle<v8::Value> V8ArrayBufferView::bufferAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8ArrayBufferViewPrivate* privData = V8DOM::toClassPtr<V8ArrayBufferViewPrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.cpp
index bee6042..efb9a75 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.cpp
@@ -7,7 +7,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Attr::Tmpl;
-
v8::Handle<v8::Value> V8Attr::nameAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8AttrPrivate* privData = V8DOM::toClassPtr<V8AttrPrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.cpp
index a9e5ac9..a348cd5 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.cpp
@@ -5,7 +5,6 @@ namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8CDATASection::Tmpl;
-
bool V8CDATASection::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.cpp
index 459cf96..673e6a8 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8CharacterData::Tmpl;
-
v8::Handle<v8::Value> V8CharacterData::dataAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8CharacterDataPrivate* privData = V8DOM::toClassPtr<V8CharacterDataPrivate >(self->GetInternalField(0));
@@ -27,76 +26,101 @@ v8::Handle<v8::Value> V8CharacterData::lengthAttrGetter(v8::Local<v8::String> pr
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8CharacterData::substringDataCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in substringData");
v8::Local<v8::Object> self = args.Holder();
struct V8CharacterDataPrivate* privData = V8DOM::toClassPtr<V8CharacterDataPrivate >(self->GetInternalField(0));
- unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
- unsigned long localCount = args[1]->ToNumber()->Uint32Value();
-
- std::string retVal = privData->nativeObj->substringData(localOffset, localCount);
-
- return v8::String::New(retVal.c_str());
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned long localCount = args[1]->ToNumber()->Uint32Value();
+
+ std::string retVal = privData->nativeObj->substringData(localOffset, localCount);
+
+ return v8::String::New(retVal.c_str());
+ }
+ throw V8Exception("Parameter mismatch while calling substringData");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8CharacterData::appendDataCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in appendData");
v8::Local<v8::Object> self = args.Holder();
struct V8CharacterDataPrivate* privData = V8DOM::toClassPtr<V8CharacterDataPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localArg(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localArg(args[0]);
- privData->nativeObj->appendData(*localArg);
+ privData->nativeObj->appendData(*localArg);
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling appendData");
return v8::Undefined();
}
v8::Handle<v8::Value> V8CharacterData::insertDataCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in insertData");
v8::Local<v8::Object> self = args.Holder();
struct V8CharacterDataPrivate* privData = V8DOM::toClassPtr<V8CharacterDataPrivate >(self->GetInternalField(0));
- unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
- v8::String::AsciiValue localArg(args[1]);
-
- privData->nativeObj->insertData(localOffset, *localArg);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsString()) {
+ unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
+ v8::String::AsciiValue localArg(args[1]);
+
+ privData->nativeObj->insertData(localOffset, *localArg);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling insertData");
return v8::Undefined();
}
v8::Handle<v8::Value> V8CharacterData::deleteDataCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in deleteData");
v8::Local<v8::Object> self = args.Holder();
struct V8CharacterDataPrivate* privData = V8DOM::toClassPtr<V8CharacterDataPrivate >(self->GetInternalField(0));
- unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
- unsigned long localCount = args[1]->ToNumber()->Uint32Value();
-
- privData->nativeObj->deleteData(localOffset, localCount);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned long localCount = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->deleteData(localOffset, localCount);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling deleteData");
return v8::Undefined();
}
v8::Handle<v8::Value> V8CharacterData::replaceDataCallback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in replaceData");
v8::Local<v8::Object> self = args.Holder();
struct V8CharacterDataPrivate* privData = V8DOM::toClassPtr<V8CharacterDataPrivate >(self->GetInternalField(0));
- unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
- unsigned long localCount = args[1]->ToNumber()->Uint32Value();
- v8::String::AsciiValue localArg(args[2]);
-
- privData->nativeObj->replaceData(localOffset, localCount, *localArg);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32() &&
+ args[2]->IsString()) {
+ unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned long localCount = args[1]->ToNumber()->Uint32Value();
+ v8::String::AsciiValue localArg(args[2]);
+
+ privData->nativeObj->replaceData(localOffset, localCount, *localArg);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling replaceData");
return v8::Undefined();
}
-
bool V8CharacterData::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.cpp
index f754ea7..97cd948 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.cpp
@@ -5,7 +5,6 @@ namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Comment::Tmpl;
-
bool V8Comment::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.cpp
index f7a7575..00fe645 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.cpp
@@ -8,71 +8,85 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8DOMImplementation::Tmpl;
v8::Handle<v8::Value> V8DOMImplementation::hasFeatureCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in hasFeature");
v8::Local<v8::Object> self = args.Holder();
struct V8DOMImplementationPrivate* privData = V8DOM::toClassPtr<V8DOMImplementationPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localFeature(args[0]);
- v8::String::AsciiValue localVersion(args[1]);
-
- bool retVal = privData->nativeObj->hasFeature(*localFeature, *localVersion);
-
- return v8::Boolean::New(retVal);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localFeature(args[0]);
+ v8::String::AsciiValue localVersion(args[1]);
+
+ bool retVal = privData->nativeObj->hasFeature(*localFeature, *localVersion);
+
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling hasFeature");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DOMImplementation::createDocumentTypeCallback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in createDocumentType");
v8::Local<v8::Object> self = args.Holder();
struct V8DOMImplementationPrivate* privData = V8DOM::toClassPtr<V8DOMImplementationPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localQualifiedName(args[0]);
- v8::String::AsciiValue localPublicId(args[1]);
- v8::String::AsciiValue localSystemId(args[2]);
-
- Arabica::DOM::DocumentType<std::string>* retVal = new Arabica::DOM::DocumentType<std::string>(privData->nativeObj->createDocumentType(*localQualifiedName, *localPublicId, *localSystemId));
- v8::Handle<v8::Function> retCtor = V8DocumentType::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
-
- struct V8DocumentType::V8DocumentTypePrivate* retPrivData = new V8DocumentType::V8DocumentTypePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
-
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
-
- retObj.MakeWeak(0, V8DocumentType::jsDestructor);
- return retObj;
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsString() &&
+ args[1]->IsString() &&
+ args[2]->IsString()) {
+ v8::String::AsciiValue localQualifiedName(args[0]);
+ v8::String::AsciiValue localPublicId(args[1]);
+ v8::String::AsciiValue localSystemId(args[2]);
+
+ Arabica::DOM::DocumentType<std::string>* retVal = new Arabica::DOM::DocumentType<std::string>(privData->nativeObj->createDocumentType(*localQualifiedName, *localPublicId, *localSystemId));
+ v8::Handle<v8::Function> retCtor = V8DocumentType::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8DocumentType::V8DocumentTypePrivate* retPrivData = new V8DocumentType::V8DocumentTypePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8DocumentType::jsDestructor);
+ return retObj;
+
+ }
+ throw V8Exception("Parameter mismatch while calling createDocumentType");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DOMImplementation::createDocumentCallback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in createDocument");
- if (!(V8DocumentType::hasInstance(args[2])))
- throw V8Exception("Parameter mismatch while calling createDocument");
v8::Local<v8::Object> self = args.Holder();
struct V8DOMImplementationPrivate* privData = V8DOM::toClassPtr<V8DOMImplementationPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localQualifiedName(args[1]);
- Arabica::DOM::DocumentType<std::string>* localDoctype = V8DOM::toClassPtr<V8DocumentType::V8DocumentTypePrivate >(args[2]->ToObject()->GetInternalField(0))->nativeObj;
-
- Arabica::DOM::Document<std::string>* retVal = new Arabica::DOM::Document<std::string>(privData->nativeObj->createDocument(*localNamespaceURI, *localQualifiedName, *localDoctype));
- v8::Handle<v8::Function> retCtor = V8Document::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
-
- struct V8Document::V8DocumentPrivate* retPrivData = new V8Document::V8DocumentPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
-
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
-
- retObj.MakeWeak(0, V8Document::jsDestructor);
- return retObj;
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsString() &&
+ args[1]->IsString() &&
+ args[2]->IsObject() && V8DocumentType::hasInstance(args[2])) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localQualifiedName(args[1]);
+ Arabica::DOM::DocumentType<std::string>* localDoctype = V8DOM::toClassPtr<V8DocumentType::V8DocumentTypePrivate >(args[2]->ToObject()->GetInternalField(0))->nativeObj;
+
+ Arabica::DOM::Document<std::string>* retVal = new Arabica::DOM::Document<std::string>(privData->nativeObj->createDocument(*localNamespaceURI, *localQualifiedName, *localDoctype));
+ v8::Handle<v8::Function> retCtor = V8Document::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Document::V8DocumentPrivate* retPrivData = new V8Document::V8DocumentPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Document::jsDestructor);
+ return retObj;
+
+ }
+ throw V8Exception("Parameter mismatch while calling createDocument");
+ return v8::Undefined();
}
-
bool V8DOMImplementation::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.cpp
index 4a756ee..4611595 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.cpp
@@ -1,238 +1,468 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8DataView.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8DataView::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8DataView::Constr;
+
+v8::Handle<v8::Value> V8DataView::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::DataView* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localByteLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::DataView(localBuffer, localByteOffset, localByteLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::DataView(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::DataView(localBuffer);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for DataView");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8DataView::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8DataView::V8DataViewPrivate* retPrivData = new V8DataView::V8DataViewPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8DataView::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8DataView::getInt8Callback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getInt8");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- char retVal = privData->nativeObj->getInt8(localByteOffset);
+ char retVal = privData->nativeObj->getInt8(localByteOffset);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getInt8");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getUint8Callback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getUint8");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- char retVal = privData->nativeObj->getUint8(localByteOffset);
+ unsigned char retVal = privData->nativeObj->getUint8(localByteOffset);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getUint8");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getInt16Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getInt16");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+
+ short retVal = privData->nativeObj->getInt16(localByteOffset, localLittleEndian);
- short retVal = privData->nativeObj->getInt16(localByteOffset, localLittleEndian);
+ return v8::Number::New(retVal);
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- return v8::Number::New(retVal);
+ short retVal = privData->nativeObj->getInt16(localByteOffset);
+
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getInt16");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getUint16Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getUint16");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+
+ unsigned short retVal = privData->nativeObj->getUint16(localByteOffset, localLittleEndian);
- unsigned short retVal = privData->nativeObj->getUint16(localByteOffset, localLittleEndian);
+ return v8::Number::New(retVal);
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- return v8::Number::New(retVal);
+ unsigned short retVal = privData->nativeObj->getUint16(localByteOffset);
+
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getUint16");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getInt32Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getInt32");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+
+ long retVal = privData->nativeObj->getInt32(localByteOffset, localLittleEndian);
- long retVal = privData->nativeObj->getInt32(localByteOffset, localLittleEndian);
+ return v8::Number::New(retVal);
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- return v8::Number::New(retVal);
+ long retVal = privData->nativeObj->getInt32(localByteOffset);
+
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getInt32");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getUint32Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getUint32");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+
+ unsigned long retVal = privData->nativeObj->getUint32(localByteOffset, localLittleEndian);
- unsigned long retVal = privData->nativeObj->getUint32(localByteOffset, localLittleEndian);
+ return v8::Number::New(retVal);
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- return v8::Number::New(retVal);
+ unsigned long retVal = privData->nativeObj->getUint32(localByteOffset);
+
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getUint32");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getFloat32Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getFloat32");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+
+ float retVal = privData->nativeObj->getFloat32(localByteOffset, localLittleEndian);
+
+ return v8::Number::New(retVal);
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- float retVal = privData->nativeObj->getFloat32(localByteOffset, localLittleEndian);
+ float retVal = privData->nativeObj->getFloat32(localByteOffset);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getFloat32");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::getFloat64Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getFloat64");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[1]->ToBoolean()->BooleanValue();
+
+ double retVal = privData->nativeObj->getFloat64(localByteOffset, localLittleEndian);
+
+ return v8::Number::New(retVal);
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- double retVal = privData->nativeObj->getFloat64(localByteOffset, localLittleEndian);
+ double retVal = privData->nativeObj->getFloat64(localByteOffset);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling getFloat64");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setInt8Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in setInt8");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- char localValue = args[1]->ToNumber()->Int32Value();
-
- privData->nativeObj->setInt8(localByteOffset, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ char localValue = args[1]->ToNumber()->Int32Value();
+
+ privData->nativeObj->setInt8(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setInt8");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setUint8Callback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in setUint8");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- unsigned char localValue = args[1]->ToNumber()->Uint32Value();
-
- privData->nativeObj->setUint8(localByteOffset, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned char localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->setUint8(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setUint8");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setInt16Callback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setInt16");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- short localValue = args[1]->ToNumber()->Int32Value();
- bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
-
- privData->nativeObj->setInt16(localByteOffset, localValue, localLittleEndian);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32() &&
+ args[2]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ short localValue = args[1]->ToNumber()->Int32Value();
+ bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
+
+ privData->nativeObj->setInt16(localByteOffset, localValue, localLittleEndian);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ short localValue = args[1]->ToNumber()->Int32Value();
+
+ privData->nativeObj->setInt16(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setInt16");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setUint16Callback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setUint16");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- unsigned short localValue = args[1]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
-
- privData->nativeObj->setUint16(localByteOffset, localValue, localLittleEndian);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32() &&
+ args[2]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned short localValue = args[1]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
+
+ privData->nativeObj->setUint16(localByteOffset, localValue, localLittleEndian);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned short localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->setUint16(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setUint16");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setInt32Callback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setInt32");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- long localValue = args[1]->ToNumber()->Int32Value();
- bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
-
- privData->nativeObj->setInt32(localByteOffset, localValue, localLittleEndian);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32() &&
+ args[2]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ long localValue = args[1]->ToNumber()->Int32Value();
+ bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
+
+ privData->nativeObj->setInt32(localByteOffset, localValue, localLittleEndian);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ long localValue = args[1]->ToNumber()->Int32Value();
+
+ privData->nativeObj->setInt32(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setInt32");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setUint32Callback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setUint32");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- unsigned long localValue = args[1]->ToNumber()->Uint32Value();
- bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
-
- privData->nativeObj->setUint32(localByteOffset, localValue, localLittleEndian);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32() &&
+ args[2]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned long localValue = args[1]->ToNumber()->Uint32Value();
+ bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
+
+ privData->nativeObj->setUint32(localByteOffset, localValue, localLittleEndian);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ unsigned long localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->setUint32(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setUint32");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setFloat32Callback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setFloat32");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- float localValue = args[1]->ToNumber()->Value();
- bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
-
- privData->nativeObj->setFloat32(localByteOffset, localValue, localLittleEndian);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsNumber() &&
+ args[2]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ float localValue = args[1]->ToNumber()->Value();
+ bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
+
+ privData->nativeObj->setFloat32(localByteOffset, localValue, localLittleEndian);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsNumber()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ float localValue = args[1]->ToNumber()->Value();
+
+ privData->nativeObj->setFloat32(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setFloat32");
return v8::Undefined();
}
v8::Handle<v8::Value> V8DataView::setFloat64Callback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setFloat64");
v8::Local<v8::Object> self = args.Holder();
struct V8DataViewPrivate* privData = V8DOM::toClassPtr<V8DataViewPrivate >(self->GetInternalField(0));
- unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
- double localValue = args[1]->ToNumber()->Value();
- bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
-
- privData->nativeObj->setFloat64(localByteOffset, localValue, localLittleEndian);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsUint32() &&
+ args[1]->IsNumber() &&
+ args[2]->IsBoolean()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ double localValue = args[1]->ToNumber()->Value();
+ bool localLittleEndian = args[2]->ToBoolean()->BooleanValue();
+
+ privData->nativeObj->setFloat64(localByteOffset, localValue, localLittleEndian);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsNumber()) {
+ unsigned long localByteOffset = args[0]->ToNumber()->Uint32Value();
+ double localValue = args[1]->ToNumber()->Value();
+
+ privData->nativeObj->setFloat64(localByteOffset, localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setFloat64");
return v8::Undefined();
}
-
bool V8DataView::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.h
index 476ff87..e2d2351 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DataView.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -59,6 +60,16 @@ public:
static v8::Handle<v8::Value> setFloat64Callback(const v8::Arguments&);
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
+
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
if (Tmpl.IsEmpty()) {
@@ -107,6 +118,7 @@ public:
v8::FunctionTemplate::New(V8DataView::setFloat64Callback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.cpp
index 06191ea..c45039c 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.cpp
@@ -17,7 +17,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Document::Tmpl;
-
v8::Handle<v8::Value> V8Document::doctypeAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
@@ -77,332 +76,392 @@ v8::Handle<v8::Value> V8Document::documentElementAttrGetter(v8::Local<v8::String
return arbaicaRetObj;
}
+
v8::Handle<v8::Value> V8Document::createElementCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in createElement");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localTagName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localTagName(args[0]);
- Arabica::DOM::Element<std::string>* retVal = new Arabica::DOM::Element<std::string>(privData->nativeObj->createElement(*localTagName));
- v8::Handle<v8::Function> retCtor = V8Element::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Element<std::string>* retVal = new Arabica::DOM::Element<std::string>(privData->nativeObj->createElement(*localTagName));
+ v8::Handle<v8::Function> retCtor = V8Element::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Element::V8ElementPrivate* retPrivData = new V8Element::V8ElementPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Element::V8ElementPrivate* retPrivData = new V8Element::V8ElementPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Element::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Element::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createElement");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createDocumentFragmentCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- Arabica::DOM::DocumentFragment<std::string>* retVal = new Arabica::DOM::DocumentFragment<std::string>(privData->nativeObj->createDocumentFragment());
- v8::Handle<v8::Function> retCtor = V8DocumentFragment::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::DocumentFragment<std::string>* retVal = new Arabica::DOM::DocumentFragment<std::string>(privData->nativeObj->createDocumentFragment());
+ v8::Handle<v8::Function> retCtor = V8DocumentFragment::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8DocumentFragment::V8DocumentFragmentPrivate* retPrivData = new V8DocumentFragment::V8DocumentFragmentPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8DocumentFragment::V8DocumentFragmentPrivate* retPrivData = new V8DocumentFragment::V8DocumentFragmentPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8DocumentFragment::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8DocumentFragment::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createDocumentFragment");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createTextNodeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in createTextNode");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localData(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localData(args[0]);
- Arabica::DOM::Text<std::string>* retVal = new Arabica::DOM::Text<std::string>(privData->nativeObj->createTextNode(*localData));
- v8::Handle<v8::Function> retCtor = V8Text::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Text<std::string>* retVal = new Arabica::DOM::Text<std::string>(privData->nativeObj->createTextNode(*localData));
+ v8::Handle<v8::Function> retCtor = V8Text::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Text::V8TextPrivate* retPrivData = new V8Text::V8TextPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Text::V8TextPrivate* retPrivData = new V8Text::V8TextPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Text::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Text::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createTextNode");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createCommentCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in createComment");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localData(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localData(args[0]);
- Arabica::DOM::Comment<std::string>* retVal = new Arabica::DOM::Comment<std::string>(privData->nativeObj->createComment(*localData));
- v8::Handle<v8::Function> retCtor = V8Comment::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Comment<std::string>* retVal = new Arabica::DOM::Comment<std::string>(privData->nativeObj->createComment(*localData));
+ v8::Handle<v8::Function> retCtor = V8Comment::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Comment::V8CommentPrivate* retPrivData = new V8Comment::V8CommentPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Comment::V8CommentPrivate* retPrivData = new V8Comment::V8CommentPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Comment::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Comment::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createComment");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createCDATASectionCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in createCDATASection");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localData(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localData(args[0]);
- Arabica::DOM::CDATASection<std::string>* retVal = new Arabica::DOM::CDATASection<std::string>(privData->nativeObj->createCDATASection(*localData));
- v8::Handle<v8::Function> retCtor = V8CDATASection::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::CDATASection<std::string>* retVal = new Arabica::DOM::CDATASection<std::string>(privData->nativeObj->createCDATASection(*localData));
+ v8::Handle<v8::Function> retCtor = V8CDATASection::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8CDATASection::V8CDATASectionPrivate* retPrivData = new V8CDATASection::V8CDATASectionPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8CDATASection::V8CDATASectionPrivate* retPrivData = new V8CDATASection::V8CDATASectionPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8CDATASection::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8CDATASection::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createCDATASection");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createProcessingInstructionCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in createProcessingInstruction");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localTarget(args[0]);
- v8::String::AsciiValue localData(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localTarget(args[0]);
+ v8::String::AsciiValue localData(args[1]);
- Arabica::DOM::ProcessingInstruction<std::string>* retVal = new Arabica::DOM::ProcessingInstruction<std::string>(privData->nativeObj->createProcessingInstruction(*localTarget, *localData));
- v8::Handle<v8::Function> retCtor = V8ProcessingInstruction::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::ProcessingInstruction<std::string>* retVal = new Arabica::DOM::ProcessingInstruction<std::string>(privData->nativeObj->createProcessingInstruction(*localTarget, *localData));
+ v8::Handle<v8::Function> retCtor = V8ProcessingInstruction::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8ProcessingInstruction::V8ProcessingInstructionPrivate* retPrivData = new V8ProcessingInstruction::V8ProcessingInstructionPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8ProcessingInstruction::V8ProcessingInstructionPrivate* retPrivData = new V8ProcessingInstruction::V8ProcessingInstructionPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8ProcessingInstruction::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8ProcessingInstruction::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createProcessingInstruction");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createAttributeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in createAttribute");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->createAttribute(*localName));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->createAttribute(*localName));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createAttribute");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createEntityReferenceCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in createEntityReference");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- Arabica::DOM::EntityReference<std::string>* retVal = new Arabica::DOM::EntityReference<std::string>(privData->nativeObj->createEntityReference(*localName));
- v8::Handle<v8::Function> retCtor = V8EntityReference::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::EntityReference<std::string>* retVal = new Arabica::DOM::EntityReference<std::string>(privData->nativeObj->createEntityReference(*localName));
+ v8::Handle<v8::Function> retCtor = V8EntityReference::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8EntityReference::V8EntityReferencePrivate* retPrivData = new V8EntityReference::V8EntityReferencePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8EntityReference::V8EntityReferencePrivate* retPrivData = new V8EntityReference::V8EntityReferencePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8EntityReference::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8EntityReference::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createEntityReference");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::getElementsByTagNameCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getElementsByTagName");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localTagname(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localTagname(args[0]);
- Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagName(*localTagname));
- v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagName(*localTagname));
+ v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8NodeList::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8NodeList::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getElementsByTagName");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::importNodeCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in importNode");
- if (!(V8Node::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling importNode");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localImportedNode = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- bool localDeep = args[1]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0]) &&
+ args[1]->IsBoolean()) {
+ Arabica::DOM::Node<std::string>* localImportedNode = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ bool localDeep = args[1]->ToBoolean()->BooleanValue();
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->importNode(*localImportedNode, localDeep));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->importNode(*localImportedNode, localDeep));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling importNode");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createElementNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in createElementNS");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localQualifiedName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localQualifiedName(args[1]);
- Arabica::DOM::Element<std::string>* retVal = new Arabica::DOM::Element<std::string>(privData->nativeObj->createElementNS(*localNamespaceURI, *localQualifiedName));
- v8::Handle<v8::Function> retCtor = V8Element::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Element<std::string>* retVal = new Arabica::DOM::Element<std::string>(privData->nativeObj->createElementNS(*localNamespaceURI, *localQualifiedName));
+ v8::Handle<v8::Function> retCtor = V8Element::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Element::V8ElementPrivate* retPrivData = new V8Element::V8ElementPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Element::V8ElementPrivate* retPrivData = new V8Element::V8ElementPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Element::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Element::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createElementNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::createAttributeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in createAttributeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localQualifiedName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localQualifiedName(args[1]);
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->createAttributeNS(*localNamespaceURI, *localQualifiedName));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->createAttributeNS(*localNamespaceURI, *localQualifiedName));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling createAttributeNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::getElementsByTagNameNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getElementsByTagNameNS");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
- Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagNameNS(*localNamespaceURI, *localLocalName));
- v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagNameNS(*localNamespaceURI, *localLocalName));
+ v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8NodeList::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8NodeList::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getElementsByTagNameNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Document::getElementByIdCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getElementById");
v8::Local<v8::Object> self = args.Holder();
struct V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localElementId(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localElementId(args[0]);
- Arabica::DOM::Element<std::string>* retVal = new Arabica::DOM::Element<std::string>(privData->nativeObj->getElementById(*localElementId));
- v8::Handle<v8::Function> retCtor = V8Element::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Element<std::string>* retVal = new Arabica::DOM::Element<std::string>(privData->nativeObj->getElementById(*localElementId));
+ v8::Handle<v8::Function> retCtor = V8Element::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Element::V8ElementPrivate* retPrivData = new V8Element::V8ElementPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Element::V8ElementPrivate* retPrivData = new V8Element::V8ElementPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Element::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Element::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getElementById");
+ return v8::Undefined();
}
-
bool V8Document::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.cpp
index 1403574..fa655ae 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.cpp
@@ -5,7 +5,6 @@ namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8DocumentFragment::Tmpl;
-
bool V8DocumentFragment::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.cpp
index 6b9a7b0..3b60da4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.cpp
@@ -7,7 +7,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8DocumentType::Tmpl;
-
v8::Handle<v8::Value> V8DocumentType::nameAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8DocumentTypePrivate* privData = V8DOM::toClassPtr<V8DocumentTypePrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.cpp
index 680dd5e..87ea5be 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.cpp
@@ -8,292 +8,353 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Element::Tmpl;
-
v8::Handle<v8::Value> V8Element::tagNameAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
return v8::String::New(privData->nativeObj->getTagName().c_str());
}
+
v8::Handle<v8::Value> V8Element::getAttributeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getAttribute");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- std::string retVal = privData->nativeObj->getAttribute(*localName);
+ std::string retVal = privData->nativeObj->getAttribute(*localName);
- return v8::String::New(retVal.c_str());
+ return v8::String::New(retVal.c_str());
+ }
+ throw V8Exception("Parameter mismatch while calling getAttribute");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::setAttributeCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in setAttribute");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
- v8::String::AsciiValue localValue(args[1]);
-
- privData->nativeObj->setAttribute(*localName, *localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
+ v8::String::AsciiValue localValue(args[1]);
+
+ privData->nativeObj->setAttribute(*localName, *localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setAttribute");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::removeAttributeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in removeAttribute");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- privData->nativeObj->removeAttribute(*localName);
+ privData->nativeObj->removeAttribute(*localName);
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling removeAttribute");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::getAttributeNodeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getAttributeNode");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->getAttributeNode(*localName));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->getAttributeNode(*localName));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getAttributeNode");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::setAttributeNodeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in setAttributeNode");
- if (!(V8Attr::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling setAttributeNode");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- Arabica::DOM::Attr<std::string>* localNewAttr = V8DOM::toClassPtr<V8Attr::V8AttrPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Attr::hasInstance(args[0])) {
+ Arabica::DOM::Attr<std::string>* localNewAttr = V8DOM::toClassPtr<V8Attr::V8AttrPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->setAttributeNode(*localNewAttr));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->setAttributeNode(*localNewAttr));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling setAttributeNode");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::removeAttributeNodeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in removeAttributeNode");
- if (!(V8Attr::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling removeAttributeNode");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- Arabica::DOM::Attr<std::string>* localOldAttr = V8DOM::toClassPtr<V8Attr::V8AttrPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Attr::hasInstance(args[0])) {
+ Arabica::DOM::Attr<std::string>* localOldAttr = V8DOM::toClassPtr<V8Attr::V8AttrPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->removeAttributeNode(*localOldAttr));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->removeAttributeNode(*localOldAttr));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling removeAttributeNode");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::getElementsByTagNameCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getElementsByTagName");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagName(*localName));
- v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagName(*localName));
+ v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8NodeList::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8NodeList::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getElementsByTagName");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::getAttributeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getAttributeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
-
- std::string retVal = privData->nativeObj->getAttributeNS(*localNamespaceURI, *localLocalName);
-
- return v8::String::New(retVal.c_str());
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
+
+ std::string retVal = privData->nativeObj->getAttributeNS(*localNamespaceURI, *localLocalName);
+
+ return v8::String::New(retVal.c_str());
+ }
+ throw V8Exception("Parameter mismatch while calling getAttributeNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::setAttributeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 3)
- throw V8Exception("Wrong number of arguments in setAttributeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localQualifiedName(args[1]);
- v8::String::AsciiValue localValue(args[2]);
-
- privData->nativeObj->setAttributeNS(*localNamespaceURI, *localQualifiedName, *localValue);
-
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsString() &&
+ args[1]->IsString() &&
+ args[2]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localQualifiedName(args[1]);
+ v8::String::AsciiValue localValue(args[2]);
+
+ privData->nativeObj->setAttributeNS(*localNamespaceURI, *localQualifiedName, *localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setAttributeNS");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::removeAttributeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in removeAttributeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
-
- privData->nativeObj->removeAttributeNS(*localNamespaceURI, *localLocalName);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
+
+ privData->nativeObj->removeAttributeNS(*localNamespaceURI, *localLocalName);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling removeAttributeNS");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::getAttributeNodeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getAttributeNodeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->getAttributeNodeNS(*localNamespaceURI, *localLocalName));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->getAttributeNodeNS(*localNamespaceURI, *localLocalName));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getAttributeNodeNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::setAttributeNodeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in setAttributeNodeNS");
- if (!(V8Attr::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling setAttributeNodeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- Arabica::DOM::Attr<std::string>* localNewAttr = V8DOM::toClassPtr<V8Attr::V8AttrPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Attr::hasInstance(args[0])) {
+ Arabica::DOM::Attr<std::string>* localNewAttr = V8DOM::toClassPtr<V8Attr::V8AttrPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->setAttributeNodeNS(*localNewAttr));
- v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Attr<std::string>* retVal = new Arabica::DOM::Attr<std::string>(privData->nativeObj->setAttributeNodeNS(*localNewAttr));
+ v8::Handle<v8::Function> retCtor = V8Attr::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Attr::V8AttrPrivate* retPrivData = new V8Attr::V8AttrPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Attr::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Attr::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling setAttributeNodeNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::getElementsByTagNameNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getElementsByTagNameNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
- Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagNameNS(*localNamespaceURI, *localLocalName));
- v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::NodeList<std::string>* retVal = new Arabica::DOM::NodeList<std::string>(privData->nativeObj->getElementsByTagNameNS(*localNamespaceURI, *localLocalName));
+ v8::Handle<v8::Function> retCtor = V8NodeList::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8NodeList::V8NodeListPrivate* retPrivData = new V8NodeList::V8NodeListPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8NodeList::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8NodeList::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getElementsByTagNameNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::hasAttributeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in hasAttribute");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- bool retVal = privData->nativeObj->hasAttribute(*localName);
+ bool retVal = privData->nativeObj->hasAttribute(*localName);
- return v8::Boolean::New(retVal);
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling hasAttribute");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Element::hasAttributeNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in hasAttributeNS");
v8::Local<v8::Object> self = args.Holder();
struct V8ElementPrivate* privData = V8DOM::toClassPtr<V8ElementPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
-
- bool retVal = privData->nativeObj->hasAttributeNS(*localNamespaceURI, *localLocalName);
-
- return v8::Boolean::New(retVal);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
+
+ bool retVal = privData->nativeObj->hasAttributeNS(*localNamespaceURI, *localLocalName);
+
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling hasAttributeNS");
+ return v8::Undefined();
}
-
bool V8Element::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.cpp
index f3ce21d..2cb07ae 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Entity::Tmpl;
-
v8::Handle<v8::Value> V8Entity::publicIdAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8EntityPrivate* privData = V8DOM::toClassPtr<V8EntityPrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.cpp
index 197fadd..228ac79 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.cpp
@@ -5,7 +5,6 @@ namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8EntityReference::Tmpl;
-
bool V8EntityReference::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.cpp
index 6d3fa47..1fe74e6 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Float32Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Float32Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Float32Array::Constr;
+v8::Handle<v8::Value> V8Float32Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Float32Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Float32Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Float32Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Float32Array::hasInstance(args[0])) {
+
+ uscxml::Float32Array* localArray = V8DOM::toClassPtr<V8Float32Array::V8Float32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Float32Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Float32Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Float32Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<float> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToNumber()->Value());
+ }
+ localInstance = new uscxml::Float32Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Float32Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Float32Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Float32Array::V8Float32ArrayPrivate* retPrivData = new V8Float32Array::V8Float32ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Float32Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Float32Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Float32Array::lengthAttrGetter(v8::Local<v8::String> pro
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Float32Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Float32ArrayPrivate* privData = V8DOM::toClassPtr<V8Float32ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- float retVal = privData->nativeObj->get(localIndex);
+ float retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Float32Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Float32ArrayPrivate* privData = V8DOM::toClassPtr<V8Float32ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- float localValue = args[1]->ToNumber()->Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Float32Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Float32Array* localArray = V8DOM::toClassPtr<V8Float32Array::V8Float32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsNumber()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ float localValue = args[1]->ToNumber()->Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<float> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToNumber()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Float32Array::hasInstance(args[0])) {
+ uscxml::Float32Array* localArray = V8DOM::toClassPtr<V8Float32Array::V8Float32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<float> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToNumber()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Float32Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Float32ArrayPrivate* privData = V8DOM::toClassPtr<V8Float32ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Float32Array* retVal = new uscxml::Float32Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Float32Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Float32Array* retVal = new uscxml::Float32Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Float32Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Float32Array::V8Float32ArrayPrivate* retPrivData = new V8Float32Array::V8Float32ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Float32Array::V8Float32ArrayPrivate* retPrivData = new V8Float32Array::V8Float32ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Float32Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Float32Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Float32Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.h
index ffb5fa7..0eec20f 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float32Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Float32Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Float32Array::indexedPropertyCustomGetter, V8Float32Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Float32Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Float32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Float32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Float32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Float32Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(4), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(4), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.cpp
index 3dc69d0..92d468d 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Float64Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Float64Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Float64Array::Constr;
+v8::Handle<v8::Value> V8Float64Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Float64Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Float64Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Float64Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Float64Array::hasInstance(args[0])) {
+
+ uscxml::Float64Array* localArray = V8DOM::toClassPtr<V8Float64Array::V8Float64ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Float64Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Float64Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Float64Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<double> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToNumber()->Value());
+ }
+ localInstance = new uscxml::Float64Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Float64Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Float64Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Float64Array::V8Float64ArrayPrivate* retPrivData = new V8Float64Array::V8Float64ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Float64Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Float64Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Float64Array::lengthAttrGetter(v8::Local<v8::String> pro
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Float64Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Float64ArrayPrivate* privData = V8DOM::toClassPtr<V8Float64ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- double retVal = privData->nativeObj->get(localIndex);
+ double retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Float64Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Float64ArrayPrivate* privData = V8DOM::toClassPtr<V8Float64ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- double localValue = args[1]->ToNumber()->Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Float64Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Float64Array* localArray = V8DOM::toClassPtr<V8Float64Array::V8Float64ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsNumber()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ double localValue = args[1]->ToNumber()->Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<double> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToNumber()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Float64Array::hasInstance(args[0])) {
+ uscxml::Float64Array* localArray = V8DOM::toClassPtr<V8Float64Array::V8Float64ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<double> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToNumber()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Float64Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Float64ArrayPrivate* privData = V8DOM::toClassPtr<V8Float64ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Float64Array* retVal = new uscxml::Float64Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Float64Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Float64Array* retVal = new uscxml::Float64Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Float64Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Float64Array::V8Float64ArrayPrivate* retPrivData = new V8Float64Array::V8Float64ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Float64Array::V8Float64ArrayPrivate* retPrivData = new V8Float64Array::V8Float64ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Float64Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Float64Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Float64Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.h
index 8537a09..bd7755e 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Float64Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Float64Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Float64Array::indexedPropertyCustomGetter, V8Float64Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Float64Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Float64Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Float64Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Float64Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Float64Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(8), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(8), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.cpp
index ba268da..d8f63f2 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Int16Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Int16Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Int16Array::Constr;
+v8::Handle<v8::Value> V8Int16Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Int16Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int16Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int16Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Int16Array::hasInstance(args[0])) {
+
+ uscxml::Int16Array* localArray = V8DOM::toClassPtr<V8Int16Array::V8Int16ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Int16Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Int16Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int16Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<short> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInt32()->Value());
+ }
+ localInstance = new uscxml::Int16Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Int16Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Int16Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Int16Array::V8Int16ArrayPrivate* retPrivData = new V8Int16Array::V8Int16ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Int16Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Int16Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Int16Array::lengthAttrGetter(v8::Local<v8::String> prope
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Int16Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Int16ArrayPrivate* privData = V8DOM::toClassPtr<V8Int16ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- short retVal = privData->nativeObj->get(localIndex);
+ short retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Int16Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Int16ArrayPrivate* privData = V8DOM::toClassPtr<V8Int16ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- short localValue = args[1]->ToNumber()->Int32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Int16Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Int16Array* localArray = V8DOM::toClassPtr<V8Int16Array::V8Int16ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ short localValue = args[1]->ToNumber()->Int32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<short> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInt32()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Int16Array::hasInstance(args[0])) {
+ uscxml::Int16Array* localArray = V8DOM::toClassPtr<V8Int16Array::V8Int16ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<short> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInt32()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Int16Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Int16ArrayPrivate* privData = V8DOM::toClassPtr<V8Int16ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Int16Array* retVal = new uscxml::Int16Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Int16Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Int16Array* retVal = new uscxml::Int16Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Int16Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Int16Array::V8Int16ArrayPrivate* retPrivData = new V8Int16Array::V8Int16ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Int16Array::V8Int16ArrayPrivate* retPrivData = new V8Int16Array::V8Int16ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Int16Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Int16Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Int16Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.h
index e221cdd..ea5cc21 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int16Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Int16Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Int16Array::indexedPropertyCustomGetter, V8Int16Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Int16Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Int16Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Int16Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Int16Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Int16Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(2), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(2), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.cpp
index 5d00d46..5c2d130 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Int32Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Int32Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Int32Array::Constr;
+v8::Handle<v8::Value> V8Int32Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Int32Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int32Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int32Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Int32Array::hasInstance(args[0])) {
+
+ uscxml::Int32Array* localArray = V8DOM::toClassPtr<V8Int32Array::V8Int32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Int32Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Int32Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int32Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<long> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInteger()->Value());
+ }
+ localInstance = new uscxml::Int32Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Int32Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Int32Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Int32Array::V8Int32ArrayPrivate* retPrivData = new V8Int32Array::V8Int32ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Int32Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Int32Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Int32Array::lengthAttrGetter(v8::Local<v8::String> prope
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Int32Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Int32ArrayPrivate* privData = V8DOM::toClassPtr<V8Int32ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- long retVal = privData->nativeObj->get(localIndex);
+ long retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Int32Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Int32ArrayPrivate* privData = V8DOM::toClassPtr<V8Int32ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- long localValue = args[1]->ToNumber()->Int32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Int32Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Int32Array* localArray = V8DOM::toClassPtr<V8Int32Array::V8Int32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ long localValue = args[1]->ToNumber()->Int32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<long> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInteger()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Int32Array::hasInstance(args[0])) {
+ uscxml::Int32Array* localArray = V8DOM::toClassPtr<V8Int32Array::V8Int32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<long> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInteger()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Int32Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Int32ArrayPrivate* privData = V8DOM::toClassPtr<V8Int32ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Int32Array* retVal = new uscxml::Int32Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Int32Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Int32Array* retVal = new uscxml::Int32Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Int32Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Int32Array::V8Int32ArrayPrivate* retPrivData = new V8Int32Array::V8Int32ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Int32Array::V8Int32ArrayPrivate* retPrivData = new V8Int32Array::V8Int32ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Int32Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Int32Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Int32Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.h
index 892b666..d3c5b71 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int32Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Int32Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Int32Array::indexedPropertyCustomGetter, V8Int32Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Int32Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Int32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Int32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Int32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Int32Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(4), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(4), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.cpp
index fd64a8c..d78be76 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Int8Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Int8Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Int8Array::Constr;
+v8::Handle<v8::Value> V8Int8Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Int8Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int8Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int8Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Int8Array::hasInstance(args[0])) {
+
+ uscxml::Int8Array* localArray = V8DOM::toClassPtr<V8Int8Array::V8Int8ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Int8Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Int8Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Int8Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInt32()->Value());
+ }
+ localInstance = new uscxml::Int8Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Int8Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Int8Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Int8Array::V8Int8ArrayPrivate* retPrivData = new V8Int8Array::V8Int8ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Int8Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Int8Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Int8Array::lengthAttrGetter(v8::Local<v8::String> proper
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Int8Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Int8ArrayPrivate* privData = V8DOM::toClassPtr<V8Int8ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- char retVal = privData->nativeObj->get(localIndex);
+ char retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Int8Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Int8ArrayPrivate* privData = V8DOM::toClassPtr<V8Int8ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- char localValue = args[1]->ToNumber()->Int32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Int8Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Int8Array* localArray = V8DOM::toClassPtr<V8Int8Array::V8Int8ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsInt32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ char localValue = args[1]->ToNumber()->Int32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInt32()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Int8Array::hasInstance(args[0])) {
+ uscxml::Int8Array* localArray = V8DOM::toClassPtr<V8Int8Array::V8Int8ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToInt32()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Int8Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Int8ArrayPrivate* privData = V8DOM::toClassPtr<V8Int8ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Int8Array* retVal = new uscxml::Int8Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Int8Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Int8Array* retVal = new uscxml::Int8Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Int8Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Int8Array::V8Int8ArrayPrivate* retPrivData = new V8Int8Array::V8Int8ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Int8Array::V8Int8ArrayPrivate* retPrivData = new V8Int8Array::V8Int8ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Int8Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Int8Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Int8Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.h
index bcfcc3c..2802c5f 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Int8Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Int8Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Int8Array::indexedPropertyCustomGetter, V8Int8Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Int8Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Int8Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Int8Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Int8Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Int8Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(1), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(1), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.cpp
index 037d651..a405fd0 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.cpp
@@ -6,180 +6,205 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8NamedNodeMap::Tmpl;
-
v8::Handle<v8::Value> V8NamedNodeMap::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8NamedNodeMap::getNamedItemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getNamedItem");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->getNamedItem(*localName));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->getNamedItem(*localName));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getNamedItem");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8NamedNodeMap::setNamedItemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in setNamedItem");
- if (!(V8Node::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling setNamedItem");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localArg = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0])) {
+ Arabica::DOM::Node<std::string>* localArg = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->setNamedItem(*localArg));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->setNamedItem(*localArg));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling setNamedItem");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8NamedNodeMap::removeNamedItemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in removeNamedItem");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localName(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localName(args[0]);
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->removeNamedItem(*localName));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->removeNamedItem(*localName));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling removeNamedItem");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8NamedNodeMap::itemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in item");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->item(localIndex));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->item(localIndex));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling item");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8NamedNodeMap::getNamedItemNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in getNamedItemNS");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->getNamedItemNS(*localNamespaceURI, *localLocalName));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->getNamedItemNS(*localNamespaceURI, *localLocalName));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling getNamedItemNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8NamedNodeMap::setNamedItemNSCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in setNamedItemNS");
- if (!(V8Node::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling setNamedItemNS");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localArg = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0])) {
+ Arabica::DOM::Node<std::string>* localArg = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->setNamedItemNS(*localArg));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->setNamedItemNS(*localArg));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling setNamedItemNS");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8NamedNodeMap::removeNamedItemNSCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in removeNamedItemNS");
v8::Local<v8::Object> self = args.Holder();
struct V8NamedNodeMapPrivate* privData = V8DOM::toClassPtr<V8NamedNodeMapPrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localNamespaceURI(args[0]);
- v8::String::AsciiValue localLocalName(args[1]);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localNamespaceURI(args[0]);
+ v8::String::AsciiValue localLocalName(args[1]);
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->removeNamedItemNS(*localNamespaceURI, *localLocalName));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->removeNamedItemNS(*localNamespaceURI, *localLocalName));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling removeNamedItemNS");
+ return v8::Undefined();
}
-
bool V8NamedNodeMap::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.cpp
index c5b1b83..9d0cd62 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.cpp
@@ -7,7 +7,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Node::Tmpl;
-
v8::Handle<v8::Value> V8Node::nodeNameAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
@@ -203,175 +202,209 @@ v8::Handle<v8::Value> V8Node::localNameAttrGetter(v8::Local<v8::String> property
return v8::String::New(privData->nativeObj->getLocalName().c_str());
}
+
v8::Handle<v8::Value> V8Node::insertBeforeCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in insertBefore");
- if (!((V8Node::hasInstance(args[0])) && (V8Node::hasInstance(args[1]))))
- throw V8Exception("Parameter mismatch while calling insertBefore");
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localNewChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* localRefChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[1]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0]) &&
+ args[1]->IsObject() && V8Node::hasInstance(args[1])) {
+ Arabica::DOM::Node<std::string>* localNewChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ Arabica::DOM::Node<std::string>* localRefChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[1]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->insertBefore(*localNewChild, *localRefChild));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->insertBefore(*localNewChild, *localRefChild));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling insertBefore");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::replaceChildCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in replaceChild");
- if (!((V8Node::hasInstance(args[0])) && (V8Node::hasInstance(args[1]))))
- throw V8Exception("Parameter mismatch while calling replaceChild");
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localNewChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* localOldChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[1]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0]) &&
+ args[1]->IsObject() && V8Node::hasInstance(args[1])) {
+ Arabica::DOM::Node<std::string>* localNewChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ Arabica::DOM::Node<std::string>* localOldChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[1]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->replaceChild(*localNewChild, *localOldChild));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->replaceChild(*localNewChild, *localOldChild));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling replaceChild");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::removeChildCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in removeChild");
- if (!(V8Node::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling removeChild");
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localOldChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0])) {
+ Arabica::DOM::Node<std::string>* localOldChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->removeChild(*localOldChild));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->removeChild(*localOldChild));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling removeChild");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::appendChildCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in appendChild");
- if (!(V8Node::hasInstance(args[0])))
- throw V8Exception("Parameter mismatch while calling appendChild");
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
- Arabica::DOM::Node<std::string>* localNewChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Node::hasInstance(args[0])) {
+ Arabica::DOM::Node<std::string>* localNewChild = V8DOM::toClassPtr<V8Node::V8NodePrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->appendChild(*localNewChild));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->appendChild(*localNewChild));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling appendChild");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::hasChildNodesCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- bool retVal = privData->nativeObj->hasChildNodes();
+ bool retVal = privData->nativeObj->hasChildNodes();
- return v8::Boolean::New(retVal);
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling hasChildNodes");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::cloneNodeCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in cloneNode");
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
- bool localDeep = args[0]->ToBoolean()->BooleanValue();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsBoolean()) {
+ bool localDeep = args[0]->ToBoolean()->BooleanValue();
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->cloneNode(localDeep));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->cloneNode(localDeep));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling cloneNode");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::normalizeCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- privData->nativeObj->normalize();
+ privData->nativeObj->normalize();
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling normalize");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::isSupportedCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in isSupported");
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localFeature(args[0]);
- v8::String::AsciiValue localVersion(args[1]);
-
- bool retVal = privData->nativeObj->isSupported(*localFeature, *localVersion);
-
- return v8::Boolean::New(retVal);
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localFeature(args[0]);
+ v8::String::AsciiValue localVersion(args[1]);
+
+ bool retVal = privData->nativeObj->isSupported(*localFeature, *localVersion);
+
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling isSupported");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Node::hasAttributesCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8NodePrivate* privData = V8DOM::toClassPtr<V8NodePrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- bool retVal = privData->nativeObj->hasAttributes();
+ bool retVal = privData->nativeObj->hasAttributes();
- return v8::Boolean::New(retVal);
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling hasAttributes");
+ return v8::Undefined();
}
-
bool V8Node::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.cpp
index bee706e..4f37d14 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.cpp
@@ -6,36 +6,39 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8NodeList::Tmpl;
-
v8::Handle<v8::Value> V8NodeList::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8NodeListPrivate* privData = V8DOM::toClassPtr<V8NodeListPrivate >(self->GetInternalField(0));
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8NodeList::itemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in item");
v8::Local<v8::Object> self = args.Holder();
struct V8NodeListPrivate* privData = V8DOM::toClassPtr<V8NodeListPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->item(localIndex));
- v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Node<std::string>* retVal = new Arabica::DOM::Node<std::string>(privData->nativeObj->item(localIndex));
+ v8::Handle<v8::Function> retCtor = V8Node::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Node::V8NodePrivate* retPrivData = new V8Node::V8NodePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Node::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Node::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling item");
+ return v8::Undefined();
}
-
bool V8NodeList::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.cpp
index fade729..4580ef4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.cpp
@@ -5,7 +5,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8NodeSet::Tmpl;
-
v8::Handle<v8::Value> V8NodeSet::sizeAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8NodeSetPrivate* privData = V8DOM::toClassPtr<V8NodeSetPrivate >(self->GetInternalField(0));
@@ -19,16 +18,21 @@ v8::Handle<v8::Value> V8NodeSet::emptyAttrGetter(v8::Local<v8::String> property,
return v8::Boolean::New(privData->nativeObj->empty());
}
+
v8::Handle<v8::Value> V8NodeSet::toDocumentOrderCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8NodeSetPrivate* privData = V8DOM::toClassPtr<V8NodeSetPrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- privData->nativeObj->to_document_order();
+ privData->nativeObj->to_document_order();
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling toDocumentOrder");
return v8::Undefined();
}
-
bool V8NodeSet::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.cpp
index 129563d..6a53ba6 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Notation::Tmpl;
-
v8::Handle<v8::Value> V8Notation::publicIdAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8NotationPrivate* privData = V8DOM::toClassPtr<V8NotationPrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.cpp
index c6d2b28..1b819d8 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8ProcessingInstruction::Tmpl;
-
v8::Handle<v8::Value> V8ProcessingInstruction::targetAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8ProcessingInstructionPrivate* privData = V8DOM::toClassPtr<V8ProcessingInstructionPrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.cpp
index 9679d74..0f750ee 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8SCXMLEvent::Tmpl;
-
v8::Handle<v8::Value> V8SCXMLEvent::nameAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8SCXMLEventPrivate* privData = V8DOM::toClassPtr<V8SCXMLEventPrivate >(self->GetInternalField(0));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp
index d9ab828..7cd90f9 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp
@@ -5,63 +5,80 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Storage::Tmpl;
-
v8::Handle<v8::Value> V8Storage::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Storage::keyCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in key");
v8::Local<v8::Object> self = args.Holder();
struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- std::string retVal = privData->nativeObj->key(localIndex);
+ std::string retVal = privData->nativeObj->key(localIndex);
- return v8::String::New(retVal.c_str());
+ return v8::String::New(retVal.c_str());
+ }
+ throw V8Exception("Parameter mismatch while calling key");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Storage::getItemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in getItem");
v8::Local<v8::Object> self = args.Holder();
struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localKey(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localKey(args[0]);
- std::string retVal = privData->nativeObj->getItem(*localKey);
+ std::string retVal = privData->nativeObj->getItem(*localKey);
- return v8::String::New(retVal.c_str());
+ return v8::String::New(retVal.c_str());
+ }
+ throw V8Exception("Parameter mismatch while calling getItem");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Storage::setItemCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in setItem");
v8::Local<v8::Object> self = args.Holder();
struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localKey(args[0]);
- v8::String::AsciiValue localValue(args[1]);
-
- privData->nativeObj->setItem(*localKey, *localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsString() &&
+ args[1]->IsString()) {
+ v8::String::AsciiValue localKey(args[0]);
+ v8::String::AsciiValue localValue(args[1]);
+
+ privData->nativeObj->setItem(*localKey, *localValue);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling setItem");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Storage::removeItemCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in removeItem");
v8::Local<v8::Object> self = args.Holder();
struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
- v8::String::AsciiValue localKey(args[0]);
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsString()) {
+ v8::String::AsciiValue localKey(args[0]);
- privData->nativeObj->removeItem(*localKey);
+ privData->nativeObj->removeItem(*localKey);
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling removeItem");
return v8::Undefined();
}
@@ -69,12 +86,16 @@ v8::Handle<v8::Value> V8Storage::clearCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- privData->nativeObj->clear();
+ privData->nativeObj->clear();
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling clear");
return v8::Undefined();
}
-
bool V8Storage::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.cpp
index 42b298a..c37970f 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.cpp
@@ -7,28 +7,31 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Text::Tmpl;
v8::Handle<v8::Value> V8Text::splitTextCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in splitText");
v8::Local<v8::Object> self = args.Holder();
struct V8TextPrivate* privData = V8DOM::toClassPtr<V8TextPrivate >(self->GetInternalField(0));
- unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localOffset = args[0]->ToNumber()->Uint32Value();
- Arabica::DOM::Text<std::string>* retVal = new Arabica::DOM::Text<std::string>(privData->nativeObj->splitText(localOffset));
- v8::Handle<v8::Function> retCtor = V8Text::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::DOM::Text<std::string>* retVal = new Arabica::DOM::Text<std::string>(privData->nativeObj->splitText(localOffset));
+ v8::Handle<v8::Function> retCtor = V8Text::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Text::V8TextPrivate* retPrivData = new V8Text::V8TextPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Text::V8TextPrivate* retPrivData = new V8Text::V8TextPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Text::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Text::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling splitText");
+ return v8::Undefined();
}
-
bool V8Text::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8TypedArrayCustom.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8TypedArrayCustom.cpp
new file mode 100644
index 0000000..118eb46
--- /dev/null
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8TypedArrayCustom.cpp
@@ -0,0 +1,144 @@
+#include "../../TypedArray.h"
+#include "V8ArrayBuffer.h"
+#include "V8Int8Array.h"
+#include "V8Uint8Array.h"
+#include "V8Uint8ClampedArray.h"
+#include "V8Int16Array.h"
+#include "V8Uint16Array.h"
+#include "V8Int32Array.h"
+#include "V8Uint32Array.h"
+#include "V8Float32Array.h"
+#include "V8Float64Array.h"
+#include "V8DataView.h"
+
+#define V8_TYPED_ARRAY_GET_PRIVATE(type) \
+v8::Local<v8::Object> self = info.Holder(); \
+uscxml::type* array = V8DOM::toClassPtr<V8##type##Private >(self->GetInternalField(0))->nativeObj; \
+if (index > array->getLength()) \
+ return v8::Undefined();
+
+
+namespace Arabica {
+namespace DOM {
+
+v8::Handle<v8::Value> V8Int8Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Int8Array);
+ array->set(index, value->ToInt32()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Int16Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Int16Array);
+ array->set(index, value->ToInt32()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Int32Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Int32Array);
+ array->set(index, value->ToInt32()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Uint8Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint8Array);
+ array->set(index, value->ToUint32()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Uint16Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint16Array);
+ array->set(index, value->ToUint32()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Uint32Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint32Array);
+ array->set(index, value->ToUint32()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Float32Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Float32Array);
+ array->set(index, value->ToNumber()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Float64Array::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Float64Array);
+ array->set(index, value->ToNumber()->Value());
+ return value;
+}
+
+v8::Handle<v8::Value> V8Uint8ClampedArray::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint8ClampedArray);
+ array->set(index, value->ToUint32()->Value() & 0xff);
+ return value;
+}
+
+v8::Handle<v8::Value> V8ArrayBuffer::indexedPropertyCustomSetter(unsigned int index, v8::Local<v8::Value> value, const v8::AccessorInfo &info) {
+ v8::Local<v8::Object> self = info.Holder();
+ uscxml::ArrayBuffer* array = V8DOM::toClassPtr<V8ArrayBufferPrivate >(self->GetInternalField(0))->nativeObj;
+ if (index > array->getByteLength())
+ return v8::Undefined();
+ array->_buffer->_data[index] = value->ToInt32()->Value() & 0xff;
+ return value;
+
+}
+
+// ----------------
+
+v8::Handle<v8::Value> V8Int8Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Int8Array);
+ return v8::Int32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Int16Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Int16Array);
+ return v8::Int32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Int32Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Int32Array);
+ return v8::Int32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Uint8Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint8Array);
+ return v8::Uint32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Uint16Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint16Array);
+ return v8::Uint32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Uint32Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint32Array);
+ return v8::Uint32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Float32Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Float32Array);
+ return v8::Number::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Float64Array::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Float64Array);
+ return v8::Number::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8Uint8ClampedArray::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ V8_TYPED_ARRAY_GET_PRIVATE(Uint8ClampedArray);
+ return v8::Uint32::New(array->get(index));
+}
+
+v8::Handle<v8::Value> V8ArrayBuffer::indexedPropertyCustomGetter(unsigned int index, const v8::AccessorInfo &info) {
+ v8::Local<v8::Object> self = info.Holder();
+ uscxml::ArrayBuffer* array = V8DOM::toClassPtr<V8ArrayBufferPrivate >(self->GetInternalField(0))->nativeObj;
+ if (index > array->getByteLength())
+ return v8::Undefined();
+ return v8::Int32::New(array->_buffer->_data[index]);
+}
+
+}
+} \ No newline at end of file
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.cpp
index c1d94d7..4c84081 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Uint16Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Uint16Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Uint16Array::Constr;
+v8::Handle<v8::Value> V8Uint16Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Uint16Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint16Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint16Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint16Array::hasInstance(args[0])) {
+
+ uscxml::Uint16Array* localArray = V8DOM::toClassPtr<V8Uint16Array::V8Uint16ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint16Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint16Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint16Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<unsigned short> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ localInstance = new uscxml::Uint16Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Uint16Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Uint16Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Uint16Array::V8Uint16ArrayPrivate* retPrivData = new V8Uint16Array::V8Uint16ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Uint16Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Uint16Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Uint16Array::lengthAttrGetter(v8::Local<v8::String> prop
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Uint16Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint16ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint16ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- unsigned short retVal = privData->nativeObj->get(localIndex);
+ unsigned short retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint16Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint16ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint16ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- unsigned short localValue = args[1]->ToNumber()->Uint32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Uint16Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Uint16Array* localArray = V8DOM::toClassPtr<V8Uint16Array::V8Uint16ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ unsigned short localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<unsigned short> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint16Array::hasInstance(args[0])) {
+ uscxml::Uint16Array* localArray = V8DOM::toClassPtr<V8Uint16Array::V8Uint16ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<unsigned short> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint16Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint16ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint16ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Uint16Array* retVal = new uscxml::Uint16Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Uint16Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Uint16Array* retVal = new uscxml::Uint16Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Uint16Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Uint16Array::V8Uint16ArrayPrivate* retPrivData = new V8Uint16Array::V8Uint16ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Uint16Array::V8Uint16ArrayPrivate* retPrivData = new V8Uint16Array::V8Uint16ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Uint16Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Uint16Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Uint16Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.h
index e4d237d..ca9a40a 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint16Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Uint16Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Uint16Array::indexedPropertyCustomGetter, V8Uint16Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Uint16Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Uint16Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint16Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint16Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Uint16Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(2), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(2), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.cpp
index 54b05aa..da3fdc2 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Uint32Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Uint32Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Uint32Array::Constr;
+v8::Handle<v8::Value> V8Uint32Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Uint32Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint32Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint32Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint32Array::hasInstance(args[0])) {
+
+ uscxml::Uint32Array* localArray = V8DOM::toClassPtr<V8Uint32Array::V8Uint32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint32Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint32Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint32Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<unsigned long> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ localInstance = new uscxml::Uint32Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Uint32Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Uint32Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Uint32Array::V8Uint32ArrayPrivate* retPrivData = new V8Uint32Array::V8Uint32ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Uint32Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Uint32Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Uint32Array::lengthAttrGetter(v8::Local<v8::String> prop
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Uint32Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint32ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint32ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- unsigned long retVal = privData->nativeObj->get(localIndex);
+ unsigned long retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint32Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint32ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint32ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- unsigned long localValue = args[1]->ToNumber()->Uint32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Uint32Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Uint32Array* localArray = V8DOM::toClassPtr<V8Uint32Array::V8Uint32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ unsigned long localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<unsigned long> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint32Array::hasInstance(args[0])) {
+ uscxml::Uint32Array* localArray = V8DOM::toClassPtr<V8Uint32Array::V8Uint32ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<unsigned long> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint32Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint32ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint32ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Uint32Array* retVal = new uscxml::Uint32Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Uint32Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Uint32Array* retVal = new uscxml::Uint32Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Uint32Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Uint32Array::V8Uint32ArrayPrivate* retPrivData = new V8Uint32Array::V8Uint32ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Uint32Array::V8Uint32ArrayPrivate* retPrivData = new V8Uint32Array::V8Uint32ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Uint32Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Uint32Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Uint32Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.h
index 09098aa..a119719 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint32Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Uint32Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Uint32Array::indexedPropertyCustomGetter, V8Uint32Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Uint32Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Uint32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint32Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Uint32Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(4), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(4), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.cpp
index cc13bf0..b2eafe5 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Uint8Array.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Uint8Array::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Uint8Array::Constr;
+v8::Handle<v8::Value> V8Uint8Array::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Uint8Array* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint8Array(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint8Array(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint8Array::hasInstance(args[0])) {
+
+ uscxml::Uint8Array* localArray = V8DOM::toClassPtr<V8Uint8Array::V8Uint8ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint8Array(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint8Array(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint8Array(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<unsigned char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ localInstance = new uscxml::Uint8Array(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Uint8Array");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Uint8Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Uint8Array::V8Uint8ArrayPrivate* retPrivData = new V8Uint8Array::V8Uint8ArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Uint8Array::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Uint8Array::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Uint8Array::lengthAttrGetter(v8::Local<v8::String> prope
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Uint8Array::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint8ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint8ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- char retVal = privData->nativeObj->get(localIndex);
+ unsigned char retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint8Array::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint8ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint8ArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- unsigned char localValue = args[1]->ToNumber()->Uint32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Uint8Array::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Uint8Array* localArray = V8DOM::toClassPtr<V8Uint8Array::V8Uint8ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ unsigned char localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<unsigned char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint8Array::hasInstance(args[0])) {
+ uscxml::Uint8Array* localArray = V8DOM::toClassPtr<V8Uint8Array::V8Uint8ArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<unsigned char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint8Array::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint8ArrayPrivate* privData = V8DOM::toClassPtr<V8Uint8ArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Uint8Array* retVal = new uscxml::Uint8Array(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Uint8Array::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Uint8Array* retVal = new uscxml::Uint8Array(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Uint8Array::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Uint8Array::V8Uint8ArrayPrivate* retPrivData = new V8Uint8Array::V8Uint8ArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Uint8Array::V8Uint8ArrayPrivate* retPrivData = new V8Uint8Array::V8Uint8ArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Uint8Array::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Uint8Array::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Uint8Array::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.h
index e59d8a6..e32007f 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8Array.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Uint8Array::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Uint8Array::indexedPropertyCustomGetter, V8Uint8Array::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Uint8Array::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Uint8Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint8Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint8Array::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Uint8Array::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(1), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(1), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.cpp
index 64c8d95..206b755 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.cpp
@@ -1,10 +1,82 @@
+#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Uint8ClampedArray.h"
namespace Arabica {
namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8Uint8ClampedArray::Tmpl;
+v8::Persistent<v8::FunctionTemplate> V8Uint8ClampedArray::Constr;
+v8::Handle<v8::Value> V8Uint8ClampedArray::constructor(const v8::Arguments& args) {
+ if (!args.IsConstructCall())
+ return v8::ThrowException(v8::String::New("Cannot call constructor as function"));
+
+ uscxml::Uint8ClampedArray* localInstance = NULL;
+ if (false) {
+ } else if (args.Length() == 3 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32() &&
+ args[2]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ unsigned long localLength = args[2]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint8ClampedArray(localBuffer, localByteOffset, localLength);
+
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localByteOffset = args[1]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint8ClampedArray(localBuffer, localByteOffset);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint8ClampedArray::hasInstance(args[0])) {
+
+ uscxml::Uint8ClampedArray* localArray = V8DOM::toClassPtr<V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint8ClampedArray(localArray);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8ArrayBuffer::hasInstance(args[0])) {
+
+ uscxml::ArrayBuffer* localBuffer = V8DOM::toClassPtr<V8ArrayBuffer::V8ArrayBufferPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ localInstance = new uscxml::Uint8ClampedArray(localBuffer);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+
+ unsigned long localLength = args[0]->ToNumber()->Uint32Value();
+ localInstance = new uscxml::Uint8ClampedArray(localLength);
+
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+
+ std::vector<unsigned char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ localInstance = new uscxml::Uint8ClampedArray(localArray);
+
+ }
+ if (!localInstance) {
+ throw V8Exception("Parameter mismatch while calling constructor for Uint8ClampedArray");
+ return v8::Undefined();
+ }
+
+ v8::Handle<v8::Function> retCtor = V8Uint8ClampedArray::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ struct V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate* retPrivData = new V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate();
+ retPrivData->nativeObj = localInstance;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8Uint8ClampedArray::jsDestructor);
+ return retObj;
+}
v8::Handle<v8::Value> V8Uint8ClampedArray::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
@@ -12,57 +84,111 @@ v8::Handle<v8::Value> V8Uint8ClampedArray::lengthAttrGetter(v8::Local<v8::String
return v8::Integer::New(privData->nativeObj->getLength());
}
+
v8::Handle<v8::Value> V8Uint8ClampedArray::getCallback(const v8::Arguments& args) {
- if (args.Length() < 1)
- throw V8Exception("Wrong number of arguments in get");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint8ClampedArrayPrivate* privData = V8DOM::toClassPtr<V8Uint8ClampedArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ if (false) {
+ } else if (args.Length() == 1 &&
+ args[0]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- char retVal = privData->nativeObj->get(localIndex);
+ unsigned char retVal = privData->nativeObj->get(localIndex);
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling get");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint8ClampedArray::setCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in set");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint8ClampedArrayPrivate* privData = V8DOM::toClassPtr<V8Uint8ClampedArrayPrivate >(self->GetInternalField(0));
- unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
- unsigned char localValue = args[1]->ToNumber()->Uint32Value();
-
- privData->nativeObj->set(localIndex, localValue);
-
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsObject() && V8Uint8ClampedArray::hasInstance(args[0]) &&
+ args[1]->IsUint32()) {
+ uscxml::Uint8ClampedArray* localArray = V8DOM::toClassPtr<V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsUint32() &&
+ args[1]->IsUint32()) {
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+ unsigned char localValue = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localIndex, localValue);
+
+ return v8::Undefined();
+ } else if (args.Length() == 2 &&
+ args[0]->IsArray() &&
+ args[1]->IsUint32()) {
+ std::vector<unsigned char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+ unsigned long localOffset = args[1]->ToNumber()->Uint32Value();
+
+ privData->nativeObj->set(localArray, localOffset);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsObject() && V8Uint8ClampedArray::hasInstance(args[0])) {
+ uscxml::Uint8ClampedArray* localArray = V8DOM::toClassPtr<V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate >(args[0]->ToObject()->GetInternalField(0))->nativeObj;
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ } else if (args.Length() == 1 &&
+ args[0]->IsArray()) {
+ std::vector<unsigned char> localArray;
+ v8::Handle<v8::Array> localArrayArray(v8::Array::Cast(*args[0]));
+ for (int i = 0; i < localArrayArray->Length(); i++) {
+ localArray.push_back(localArrayArray->Get(i)->ToUint32()->Value());
+ }
+
+ privData->nativeObj->set(localArray);
+
+ return v8::Undefined();
+ }
+ throw V8Exception("Parameter mismatch while calling set");
return v8::Undefined();
}
v8::Handle<v8::Value> V8Uint8ClampedArray::subarrayCallback(const v8::Arguments& args) {
- if (args.Length() < 2)
- throw V8Exception("Wrong number of arguments in subarray");
v8::Local<v8::Object> self = args.Holder();
struct V8Uint8ClampedArrayPrivate* privData = V8DOM::toClassPtr<V8Uint8ClampedArrayPrivate >(self->GetInternalField(0));
- long localStart = args[0]->ToNumber()->Int32Value();
- long localEnd = args[1]->ToNumber()->Int32Value();
+ if (false) {
+ } else if (args.Length() == 2 &&
+ args[0]->IsInt32() &&
+ args[1]->IsInt32()) {
+ long localStart = args[0]->ToNumber()->Int32Value();
+ long localEnd = args[1]->ToNumber()->Int32Value();
- uscxml::Uint8ClampedArray* retVal = new uscxml::Uint8ClampedArray(privData->nativeObj->subarray(localStart, localEnd));
- v8::Handle<v8::Function> retCtor = V8Uint8ClampedArray::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ uscxml::Uint8ClampedArray* retVal = new uscxml::Uint8ClampedArray(privData->nativeObj->subarray(localStart, localEnd));
+ v8::Handle<v8::Function> retCtor = V8Uint8ClampedArray::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate* retPrivData = new V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate* retPrivData = new V8Uint8ClampedArray::V8Uint8ClampedArrayPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8Uint8ClampedArray::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8Uint8ClampedArray::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling subarray");
+ return v8::Undefined();
}
-
bool V8Uint8ClampedArray::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.h
index 37f9482..8e130f4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Uint8ClampedArray.h
@@ -24,6 +24,7 @@
#include <string>
#include "../../TypedArray.h"
#include "DOM/Node.hpp"
+#include "V8ArrayBufferView.h"
#include "string"
#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
@@ -46,6 +47,18 @@ public:
static v8::Handle<v8::Value> subarrayCallback(const v8::Arguments&);
static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> indexedPropertyCustomGetter(uint32_t, const v8::AccessorInfo&);
+ static v8::Handle<v8::Value> indexedPropertyCustomSetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&);
+
+ static v8::Handle<v8::Value> constructor(const v8::Arguments&);
+ static v8::Persistent<v8::FunctionTemplate> Constr;
+ static v8::Handle<v8::FunctionTemplate> getConstructor() {
+ if (Constr.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> constr = v8::FunctionTemplate::New(constructor);
+ Constr = v8::Persistent<v8::FunctionTemplate>::New(constr);
+ }
+ return Constr;
+ }
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -63,20 +76,18 @@ public:
instance->SetAccessor(v8::String::NewSymbol("length"), V8Uint8ClampedArray::lengthAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetIndexedPropertyHandler(V8Uint8ClampedArray::indexedPropertyCustomGetter, V8Uint8ClampedArray::indexedPropertyCustomSetter);
prototype->Set(v8::String::NewSymbol("get"),
v8::FunctionTemplate::New(V8Uint8ClampedArray::getCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("set"),
v8::FunctionTemplate::New(V8Uint8ClampedArray::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint8ClampedArray::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
- prototype->Set(v8::String::NewSymbol("set"),
- v8::FunctionTemplate::New(V8Uint8ClampedArray::setCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
prototype->Set(v8::String::NewSymbol("subarray"),
v8::FunctionTemplate::New(V8Uint8ClampedArray::subarrayCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
tmpl->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(1), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
prototype->Set(v8::String::NewSymbol("BYTES_PER_ELEMENT"), v8::Integer::New(1), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
+ tmpl->Inherit(V8ArrayBufferView::getTmpl());
Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
}
return Tmpl;
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.cpp
index 968e53d..265bcfe 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.cpp
@@ -6,7 +6,6 @@ namespace DOM {
v8::Persistent<v8::FunctionTemplate> V8XPathResult::Tmpl;
-
v8::Handle<v8::Value> V8XPathResult::numberValueAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
v8::Local<v8::Object> self = info.Holder();
struct V8XPathResultPrivate* privData = V8DOM::toClassPtr<V8XPathResultPrivate >(self->GetInternalField(0));
@@ -27,56 +26,76 @@ v8::Handle<v8::Value> V8XPathResult::booleanValueAttrGetter(v8::Local<v8::String
return v8::Boolean::New(privData->nativeObj->asBool());
}
+
v8::Handle<v8::Value> V8XPathResult::asNodeSetCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8XPathResultPrivate* privData = V8DOM::toClassPtr<V8XPathResultPrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- Arabica::XPath::NodeSet<std::string>* retVal = new Arabica::XPath::NodeSet<std::string>(privData->nativeObj->asNodeSet());
- v8::Handle<v8::Function> retCtor = V8NodeSet::getTmpl()->GetFunction();
- v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+ Arabica::XPath::NodeSet<std::string>* retVal = new Arabica::XPath::NodeSet<std::string>(privData->nativeObj->asNodeSet());
+ v8::Handle<v8::Function> retCtor = V8NodeSet::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
- struct V8NodeSet::V8NodeSetPrivate* retPrivData = new V8NodeSet::V8NodeSetPrivate();
- retPrivData->dom = privData->dom;
- retPrivData->nativeObj = retVal;
+ struct V8NodeSet::V8NodeSetPrivate* retPrivData = new V8NodeSet::V8NodeSetPrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = retVal;
- retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
- retObj.MakeWeak(0, V8NodeSet::jsDestructor);
- return retObj;
+ retObj.MakeWeak(0, V8NodeSet::jsDestructor);
+ return retObj;
+ }
+ throw V8Exception("Parameter mismatch while calling asNodeSet");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8XPathResult::asBoolCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8XPathResultPrivate* privData = V8DOM::toClassPtr<V8XPathResultPrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- bool retVal = privData->nativeObj->asBool();
+ bool retVal = privData->nativeObj->asBool();
- return v8::Boolean::New(retVal);
+ return v8::Boolean::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling asBool");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8XPathResult::asStringCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8XPathResultPrivate* privData = V8DOM::toClassPtr<V8XPathResultPrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- std::string retVal = privData->nativeObj->asString();
+ std::string retVal = privData->nativeObj->asString();
- return v8::String::New(retVal.c_str());
+ return v8::String::New(retVal.c_str());
+ }
+ throw V8Exception("Parameter mismatch while calling asString");
+ return v8::Undefined();
}
v8::Handle<v8::Value> V8XPathResult::asNumberCallback(const v8::Arguments& args) {
v8::Local<v8::Object> self = args.Holder();
struct V8XPathResultPrivate* privData = V8DOM::toClassPtr<V8XPathResultPrivate >(self->GetInternalField(0));
+ if (false) {
+ } else if (args.Length() == 0) {
- double retVal = privData->nativeObj->asNumber();
+ double retVal = privData->nativeObj->asNumber();
- return v8::Number::New(retVal);
+ return v8::Number::New(retVal);
+ }
+ throw V8Exception("Parameter mismatch while calling asNumber");
+ return v8::Undefined();
}
-
bool V8XPathResult::hasInstance(v8::Handle<v8::Value> value) {
return getTmpl()->HasInstance(value);
}