#include "V8DocumentType.h" #include "V8NamedNodeMap.h" #include "V8Node.h" namespace Arabica { namespace DOM { v8::Persistent V8DocumentType::Tmpl; v8::Handle V8DocumentType::nameAttrGetter(v8::Local property, const v8::AccessorInfo& info) { v8::Local self = info.Holder(); V8DocumentTypePrivate* privData = V8DOM::toClassPtr(self->GetInternalField(0)); return v8::String::New(privData->arabicaThis->getName().c_str()); } v8::Handle V8DocumentType::entitiesAttrGetter(v8::Local property, const v8::AccessorInfo& info) { v8::Local self = info.Holder(); V8DocumentTypePrivate* privData = V8DOM::toClassPtr(self->GetInternalField(0)); Arabica::DOM::NamedNodeMap* arbaicaRet = new Arabica::DOM::NamedNodeMap(privData->arabicaThis->getEntities()); v8::Handle arbaicaRetCtor = V8NamedNodeMap::getTmpl()->GetFunction(); v8::Persistent arbaicaRetObj = v8::Persistent::New(arbaicaRetCtor->NewInstance()); V8NamedNodeMap::V8NamedNodeMapPrivate* retPrivData = new V8NamedNodeMap::V8NamedNodeMapPrivate(); retPrivData->dom = privData->dom; retPrivData->arabicaThis = arbaicaRet; arbaicaRetObj->SetInternalField(0, V8DOM::toExternal(retPrivData)); arbaicaRetObj.MakeWeak(0, V8NamedNodeMap::jsDestructor); return arbaicaRetObj; } v8::Handle V8DocumentType::notationsAttrGetter(v8::Local property, const v8::AccessorInfo& info) { v8::Local self = info.Holder(); V8DocumentTypePrivate* privData = V8DOM::toClassPtr(self->GetInternalField(0)); Arabica::DOM::NamedNodeMap* arbaicaRet = new Arabica::DOM::NamedNodeMap(privData->arabicaThis->getNotations()); v8::Handle arbaicaRetCtor = V8NamedNodeMap::getTmpl()->GetFunction(); v8::Persistent arbaicaRetObj = v8::Persistent::New(arbaicaRetCtor->NewInstance()); V8NamedNodeMap::V8NamedNodeMapPrivate* retPrivData = new V8NamedNodeMap::V8NamedNodeMapPrivate(); retPrivData->dom = privData->dom; retPrivData->arabicaThis = arbaicaRet; arbaicaRetObj->SetInternalField(0, V8DOM::toExternal(retPrivData)); arbaicaRetObj.MakeWeak(0, V8NamedNodeMap::jsDestructor); return arbaicaRetObj; } v8::Handle V8DocumentType::publicIdAttrGetter(v8::Local property, const v8::AccessorInfo& info) { v8::Local self = info.Holder(); V8DocumentTypePrivate* privData = V8DOM::toClassPtr(self->GetInternalField(0)); return v8::String::New(privData->arabicaThis->getPublicId().c_str()); } v8::Handle V8DocumentType::systemIdAttrGetter(v8::Local property, const v8::AccessorInfo& info) { v8::Local self = info.Holder(); V8DocumentTypePrivate* privData = V8DOM::toClassPtr(self->GetInternalField(0)); return v8::String::New(privData->arabicaThis->getSystemId().c_str()); } v8::Handle V8DocumentType::internalSubsetAttrGetter(v8::Local property, const v8::AccessorInfo& info) { v8::Local self = info.Holder(); V8DocumentTypePrivate* privData = V8DOM::toClassPtr(self->GetInternalField(0)); return v8::String::New(privData->arabicaThis->getInternalSubset().c_str()); } bool V8DocumentType::hasInstance(v8::Handle value) { return getTmpl()->HasInstance(value); } } }