コード例 #1
0
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();
}
コード例 #2
0
ファイル: V8Document.cpp プロジェクト: fabioduque/uscxml
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]);

	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;

	retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));

	retObj.MakeWeak(0, V8Attr::jsDestructor);
	return retObj;

}