// --------------------------------------------------------------------------- // ComplexTypeInfo: Getter methods // --------------------------------------------------------------------------- XMLAttDefList& ComplexTypeInfo::getAttDefList() const { if (!fAttList) { // If the att def list is not made yet, then fault it in too if (!fAttDefs) faultInAttDefList(); ((ComplexTypeInfo*)this)->fAttList = new (fMemoryManager) SchemaAttDefList(fAttDefs, fMemoryManager); } // Reset it before we return it fAttList->Reset(); return *fAttList; }
// --------------------------------------------------------------------------- // DTDElementDecl: Implementation of the protected virtual interface // --------------------------------------------------------------------------- void DTDElementDecl::addAttDef(DTDAttDef* const toAdd) { // Fault in the att list if required if (!fAttDefs) faultInAttDefList(); // Tell this guy the element id of its parent (us) toAdd->setElemId(getId()); fAttDefs->put((void*)(toAdd->getFullName()), toAdd); // update and/or create fAttList if(!fAttList) ((DTDElementDecl*)this)->fAttList = new (getMemoryManager()) DTDAttDefList(fAttDefs,getMemoryManager()); fAttList->addAttDef(toAdd); }
XMLAttDefList& DTDElementDecl::getAttDefList() const { if (!fAttList) { // If the att def list is not made yet, then fault it in too if (!fAttDefs) faultInAttDefList(); ((DTDElementDecl*)this)->fAttList = new (getMemoryManager()) DTDAttDefList(fAttDefs,getMemoryManager()); } // Reset it before we return it fAttList->Reset(); return *fAttList; }
// --------------------------------------------------------------------------- // ComplexTypeInfo: Setter methods // --------------------------------------------------------------------------- void ComplexTypeInfo::addAttDef(SchemaAttDef* const toAdd) { // Fault in the att list if required if (!fAttDefs) faultInAttDefList(); // Tell this guy the element id of its parent (us) toAdd->setElemId(getElementId()); fAttDefs->put((void*)(toAdd->getAttName()->getLocalPart()), toAdd->getAttName()->getURI(), toAdd); // update and/or create fAttList if(!fAttList) ((ComplexTypeInfo*)this)->fAttList = new (fMemoryManager) SchemaAttDefList(fAttDefs,fMemoryManager); fAttList->addAttDef(toAdd); }
// --------------------------------------------------------------------------- // ComplexTypeInfo: Helper methods // --------------------------------------------------------------------------- XMLAttDef* ComplexTypeInfo::findAttr(const XMLCh* const , const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefix , const XMLElementDecl::LookupOpts options , bool& wasAdded) const { SchemaAttDef* retVal = 0; // If no att list faulted in yet, then it cannot exist if (fAttDefs) retVal = fAttDefs->get(baseName, uriId); // Fault it in if not found and ask to add it if (!retVal && (options == XMLElementDecl::AddIfNotFound)) { // Fault in the list itself if not already if (!fAttDefs) faultInAttDefList(); // And add a default attribute for this name retVal = new (fMemoryManager) SchemaAttDef ( prefix , baseName , uriId , XMLAttDef::CData , XMLAttDef::Implied , fMemoryManager ); retVal->setElemId(getElementId()); fAttDefs->put((void*)retVal->getAttName()->getLocalPart(), uriId, retVal); // update and/or create fAttList if(!fAttList) ((ComplexTypeInfo*)this)->fAttList = new (fMemoryManager) SchemaAttDefList(fAttDefs,fMemoryManager); fAttList->addAttDef(retVal); wasAdded = true; } else { wasAdded = false; } return retVal; }
// --------------------------------------------------------------------------- // The virtual element decl interface // --------------------------------------------------------------------------- XMLAttDef* DTDElementDecl::findAttr(const XMLCh* const qName , const unsigned int , const XMLCh* const , const XMLCh* const , const LookupOpts options , bool& wasAdded) const { DTDAttDef* retVal = 0; // If no att list faulted in yet, then it cannot exist if (fAttDefs) retVal = fAttDefs->get(qName); // Fault it in if not found and ask to add it if (!retVal && (options == XMLElementDecl::AddIfNotFound)) { // Fault in the list itself if not already if (!fAttDefs) faultInAttDefList(); // And add a default attribute for this name retVal = new (getMemoryManager()) DTDAttDef ( qName , XMLAttDef::CData , XMLAttDef::Implied , getMemoryManager() ); retVal->setElemId(getId()); fAttDefs->put((void*)retVal->getFullName(), retVal); // update and/or create fAttList if(!fAttList) ((DTDElementDecl*)this)->fAttList = new (getMemoryManager()) DTDAttDefList(fAttDefs,getMemoryManager()); fAttList->addAttDef(retVal); wasAdded = true; } else { wasAdded = false; } return retVal; }