Beispiel #1
0
XMLContentModel* ComplexTypeInfo::makeContentModel(const bool checkUPA, ContentSpecNode* const specNode)
{
    if ((specNode || fContentSpec) && !fSpecNodesToDelete) {
        fSpecNodesToDelete = new (fMemoryManager) RefVectorOf<ContentSpecNode>(8, true, fMemoryManager);
    }

    // expand the content spec first
    ContentSpecNode* aSpecNode = specNode;
    XMLContentModel* retModel = 0;
    if (aSpecNode) {

        fContentSpecOrgURI = (unsigned int*) fMemoryManager->allocate
                             (
                                 fContentSpecOrgURISize * sizeof(unsigned int)
                             ); //new unsigned int[fContentSpecOrgURISize];
        aSpecNode = convertContentSpecTree(aSpecNode, checkUPA);
        retModel = buildContentModel(aSpecNode);
        fSpecNodesToDelete->addElement(aSpecNode);
    }
    else {
        // building content model for the complex type
        aSpecNode = new (fMemoryManager) ContentSpecNode(*fContentSpec);
        aSpecNode = convertContentSpecTree(aSpecNode, checkUPA);
        retModel = buildContentModel(aSpecNode);
        delete aSpecNode;
    }

    return retModel;
}
Beispiel #2
0
XMLContentModel* ComplexTypeInfo::makeContentModel(const bool checkUPA)
{
    ContentSpecNode* aSpecNode = new (fMemoryManager) ContentSpecNode(*fContentSpec);
    XMLContentModel* retModel = 0;

    if (checkUPA) {
        fContentSpecOrgURI = (unsigned int*) fMemoryManager->allocate
        (
            fContentSpecOrgURISize * sizeof(unsigned int)
        ); //new unsigned int[fContentSpecOrgURISize];
    }

    aSpecNode = convertContentSpecTree(aSpecNode, checkUPA);
    retModel = buildContentModel(aSpecNode);

    delete aSpecNode;
    return retModel;
}