[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-cvs
Subject:    cvs commit: xml-xerces/c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.cpp SGXMLScanner.cpp
From:       neilg () apache ! org
Date:       2004-05-27 16:33:08
Message-ID: 20040527163308.31393.qmail () minotaur ! apache ! org
[Download RAW message or body]

neilg       2004/05/27 09:33:08

  Modified:    c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.cpp
                        SGXMLScanner.cpp
  Log:
  Performance fix.  Instead of clearing the undeclared attribute maps
  each time we enter a start tag, assume they are clear and
  clear them only once it has been determined that the start tag we've just
  processed actually had attributes.
  
  Revision  Changes    Path
  1.47      +8 -3      xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp
  
  Index: DGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- DGXMLScanner.cpp	25 May 2004 18:09:50 -0000	1.46
  +++ DGXMLScanner.cpp	27 May 2004 16:33:07 -0000	1.47
  @@ -1241,8 +1241,6 @@
       unsigned int    attCount = 0;
       unsigned int    curAttListSize = fAttrList->size();
       wasAdded = false;
  -    // clear the map used to detect duplicate attributes
  -    fUndeclaredAttrRegistry->removeAll();
   
       fElemCount++;
   
  @@ -1590,6 +1588,13 @@
       //  Make an initial pass through the list and find any xmlns attributes.
       if (fDoNamespaces && attCount)
         scanAttrListforNameSpaces(fAttrList, attCount, elemDecl);
  +
  +    if(attCount)
  +    {
  +        // clean up after ourselves:
  +        // clear the map used to detect duplicate attributes
  +        fUndeclaredAttrRegistry->removeAll();
  +    }
   
       //  Now lets get the fAttrList filled in. This involves faulting in any
       //  defaulted and fixed attributes and normalizing the values of any that
  
  
  
  1.68      +15 -8     xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp
  
  Index: IGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- IGXMLScanner.cpp	27 Apr 2004 19:17:52 -0000	1.67
  +++ IGXMLScanner.cpp	27 May 2004 16:33:07 -0000	1.68
  @@ -1757,9 +1757,6 @@
       unsigned int    attCount = 0;
       unsigned int    curAttListSize = fAttrList->size();
       wasAdded = false;
  -    // clear the map used to detect duplicate attributes
  -    fUndeclaredAttrRegistry->removeAll();
  -    fUndeclaredAttrRegistryNS->removeAll();
   
       fElemCount++;
   
  @@ -2048,6 +2045,13 @@
           }
       }
   
  +    if(attCount)
  +    {
  +        // clean up after ourselves:
  +        // clear the map used to detect duplicate attributes
  +        fUndeclaredAttrRegistry->removeAll();
  +    }
  +
       //  Ok, so lets get an enumerator for the attributes of this element
       //  and run through them for well formedness and validity checks. But
       //  make sure that we had any attributes before we do it, since the list
  @@ -2225,10 +2229,6 @@
       // Skip any whitespace after the name
       fReaderMgr.skipPastSpaces();
   
  -    // clear the map used to detect duplicate attributes
  -    fUndeclaredAttrRegistry->removeAll();
  -    fUndeclaredAttrRegistryNS->removeAll();
  -
       //  First we have to do the rawest attribute scan. We don't do any
       //  normalization of them at all, since we don't know yet what type they
       //  might be (since we need the element decl in order to do that.)
  @@ -2841,6 +2841,13 @@
       //  it goes in with the number of values we got during the raw scan of
       //  explictly provided attrs above.
       attCount = buildAttList(*fRawAttrList, attCount, elemDecl, *fAttrList);
  +    if(attCount)
  +    {
  +        // clean up after ourselves:
  +        // clear the map used to detect duplicate attributes
  +        fUndeclaredAttrRegistry->removeAll();
  +        fUndeclaredAttrRegistryNS->removeAll();
  +    }
   
       // activate identity constraints
       if (fGrammar  && 
  
  
  
  1.82      +8 -4      xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp
  
  Index: SGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- SGXMLScanner.cpp	25 May 2004 18:09:51 -0000	1.81
  +++ SGXMLScanner.cpp	27 May 2004 16:33:07 -0000	1.82
  @@ -1693,9 +1693,6 @@
           fElemStack.addChild(elemDecl->getElementName(), true);
       }
   
  -    // clear the map used to detect duplicate attributes
  -    fUndeclaredAttrRegistryNS->removeAll();
  -
       // PSVI handling:  must reset this, even if no attributes...
       if(getPSVIHandler())
           fPSVIAttrList->reset();
  @@ -1708,6 +1705,13 @@
       //  it goes in with the number of values we got during the raw scan of
       //  explictly provided attrs above.
       attCount = buildAttList(*fRawAttrList, attCount, elemDecl, *fAttrList);
  +
  +    if(attCount)
  +    {
  +        // clean up after ourselves:
  +        // clear the map used to detect duplicate attributes
  +        fUndeclaredAttrRegistryNS->removeAll();
  +    }
   
       // activate identity constraints
       if (toCheckIdentityConstraint()) 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic