v8::Handle<v8::Value> V8DOMImplementation::createDocumentCallback(const v8::Arguments& args) { v8::Local<v8::Object> self = args.Holder(); struct V8DOMImplementationPrivate* privData = V8DOM::toClassPtr<V8DOMImplementationPrivate >(self->GetInternalField(0)); 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(); }
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]); 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; retObj->SetInternalField(0, V8DOM::toExternal(retPrivData)); retObj.MakeWeak(0, V8NodeList::jsDestructor); return retObj; }