v8::Local<v8::Signature> configureTemplate(v8::Persistent<v8::FunctionTemplate> desc, const char *interfaceName, v8::Persistent<v8::FunctionTemplate> parentClass, int fieldCount, const BatchedAttribute* attributes, size_t attributeCount, const BatchedCallback* callbacks, size_t callbackCount) { desc->SetClassName(v8::String::New(interfaceName)); v8::Local<v8::ObjectTemplate> instance = desc->InstanceTemplate(); instance->SetInternalFieldCount(fieldCount); if (!parentClass.IsEmpty()) desc->Inherit(parentClass); if (attributeCount) batchConfigureAttributes(instance, desc->PrototypeTemplate(), attributes, attributeCount); v8::Local<v8::Signature> defaultSignature = v8::Signature::New(desc); if (callbackCount) batchConfigureCallbacks(desc->PrototypeTemplate(), defaultSignature, static_cast<v8::PropertyAttribute>(v8::DontDelete), callbacks, callbackCount); return defaultSignature; }
v8::Local<v8::Signature> V8DOMConfiguration::configureTemplate(v8::Persistent<v8::FunctionTemplate> functionDescriptor, const char* interfaceName, v8::Persistent<v8::FunctionTemplate> parentClass, size_t fieldCount, const BatchedAttribute* attributes, size_t attributeCount, const BatchedCallback* callbacks, size_t callbackCount, v8::Isolate* isolate) { functionDescriptor->SetClassName(v8::String::NewSymbol(interfaceName)); v8::Local<v8::ObjectTemplate> instance = functionDescriptor->InstanceTemplate(); instance->SetInternalFieldCount(fieldCount); if (!parentClass.IsEmpty()) functionDescriptor->Inherit(parentClass); if (attributeCount) batchConfigureAttributes(instance, functionDescriptor->PrototypeTemplate(), attributes, attributeCount, isolate); v8::Local<v8::Signature> defaultSignature = v8::Signature::New(functionDescriptor); if (callbackCount) batchConfigureCallbacks(functionDescriptor->PrototypeTemplate(), defaultSignature, static_cast<v8::PropertyAttribute>(v8::DontDelete), callbacks, callbackCount, isolate); return defaultSignature; }