knoaman     2004/07/22 08:00:54

  Modified:    c/src/xercesc/validators/schema ComplexTypeInfo.hpp
                        ComplexTypeInfo.cpp
  Log:
  Eliminate the need to create a temporary content model when performing UPA checking
  
  Revision  Changes    Path
  1.20      +2 -2      xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp
  
  Index: ComplexTypeInfo.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- ComplexTypeInfo.hpp       24 Dec 2003 17:42:03 -0000      1.19
  +++ ComplexTypeInfo.hpp       22 Jul 2004 15:00:54 -0000      1.20
  @@ -403,7 +403,7 @@
   
   inline XMLContentModel* ComplexTypeInfo::getContentModel(const bool checkUPA)
   {
  -    if (!fContentModel)
  +    if (!fContentModel && fContentSpec)
           fContentModel = makeContentModel(checkUPA);
   
       return fContentModel;
  
  
  
  1.27      +19 -29    xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp
  
  Index: ComplexTypeInfo.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- ComplexTypeInfo.cpp       29 Jan 2004 11:52:31 -0000      1.26
  +++ ComplexTypeInfo.cpp       22 Jul 2004 15:00:54 -0000      1.27
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.27  2004/07/22 15:00:54  knoaman
  + * Eliminate the need to create a temporary content model when performing UPA 
checking
  + *
    * Revision 1.26  2004/01/29 11:52:31  cargilld
    * Code cleanup changes to get rid of various compiler diagnostic messages.
    *
  @@ -396,7 +399,7 @@
       delete fAttDefs;
       delete fAttList;
       delete fElements;
  -    delete fSpecNodesToDelete;
  +    //delete fSpecNodesToDelete;
       delete fLocator;
   
       delete fContentModel;
  @@ -554,16 +557,12 @@
                                                         XMLStringPool*    const 
pStringPool,
                                                         XMLValidator*     const 
pValidator)
   {
  -    if (fContentSpec) {
  -        ContentSpecNode* specNode = new (fMemoryManager) 
ContentSpecNode(*fContentSpec);
  -        XMLContentModel* cm = makeContentModel(true, specNode);
  -
  -        if (cm) {
  -            cm->checkUniqueParticleAttribution(pGrammar, pGrammarResolver, 
pStringPool, pValidator, fContentSpecOrgURI);
  -            delete cm;
  +    if (fContentSpec && !fContentModel)
  +    {
  +        fContentModel = makeContentModel(true);
  +        if (fContentModel) {
  +            fContentModel->checkUniqueParticleAttribution(pGrammar, 
pGrammarResolver, pStringPool, pValidator, fContentSpecOrgURI);
           }
  -
  -        fSpecNodesToDelete->removeAllElements();
       }
   }
   
  @@ -613,31 +612,20 @@
   
   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;
  +    ContentSpecNode* aSpecNode = new (fMemoryManager) 
ContentSpecNode(*fContentSpec);
       XMLContentModel* retModel = 0;
  -    if (aSpecNode) {
   
  +    if (checkUPA) {
           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;
       }
   
  +    aSpecNode = convertContentSpecTree(aSpecNode, checkUPA);
  +    retModel = buildContentModel(aSpecNode);
  +
  +    delete aSpecNode;
       return retModel;
   }
   
  @@ -803,12 +791,14 @@
       // When checking Unique Particle Attribution, rename leaf elements
       if (checkUPA) {
           if (curNode->getElement()) {
  +            if (fUniqueURI == fContentSpecOrgURISize) {
  +                resizeContentSpecOrgURI();
  +            }
  +
               fContentSpecOrgURI[fUniqueURI] = curNode->getElement()->getURI();
               curNode->getElement()->setURI(fUniqueURI);
               fUniqueURI++;
           }
  -        if (fUniqueURI == fContentSpecOrgURISize)
  -            resizeContentSpecOrgURI();
       }
   
       // Get the spec type of the passed node
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to