knoaman     2004/10/19 08:08:54

  Modified:    c/src/xercesc/validators/DTD DTDValidator.cpp
               c/src/xercesc/internal IGXMLScanner.cpp IGXMLScanner2.cpp
                        SGXMLScanner.cpp
               c/src/xercesc/util QName.cpp
  Log:
  Performance improvement
  
  Revision  Changes    Path
  1.25      +3 -45     xml-xerces/c/src/xercesc/validators/DTD/DTDValidator.cpp
  
  Index: DTDValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDValidator.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- DTDValidator.cpp  8 Sep 2004 13:56:50 -0000       1.24
  +++ DTDValidator.cpp  19 Oct 2004 15:08:53 -0000      1.25
  @@ -101,50 +101,7 @@
   
   void DTDValidator::faultInAttr(XMLAttr& toFill, const XMLAttDef& attDef) const
   {
  -    //
  -    //  At this level, we cannot set the URI id. So we just set it to zero
  -    //  and leave it at that. The scanner, who called us, will look at the
  -    //  prefix we stored (if any), resolve it, and store the URL id if any.
  -    //
  -    const XMLCh* fullName = attDef.getFullName();
  -    const int colonInd = XMLString::indexOf(fullName, chColon);
  -    if (colonInd == -1)
  -    {
  -        // There is no prefix, so we just do a simple and quick setting
  -        toFill.set
  -        (
  -            0
  -            , fullName
  -            , XMLUni::fgZeroLenString
  -            , attDef.getValue()
  -            , attDef.getType()
  -        );
  -    }
  -     else
  -    {
  -        //
  -        //  There is a colon, so we have to split apart the name and prefix
  -        //  part.
  -        //
  -        XMLCh* tmpNameBuf = XMLString::replicate(fullName, 
getScanner()->getMemoryManager());
  -        ArrayJanitor<XMLCh> janNameBuf(tmpNameBuf, 
getScanner()->getMemoryManager());
  -
  -        // Put a null where the colon is, to split it into two strings
  -        tmpNameBuf[colonInd] = chNull;
  -
  -        //
  -        //  And now we can set the attribute object with the prefix and name
  -        //  parts.
  -        //
  -        toFill.set
  -        (
  -            0
  -            , &tmpNameBuf[colonInd+1]
  -            , tmpNameBuf
  -            , attDef.getValue()
  -            , attDef.getType()
  -        );
  -    }
  +    toFill.set(0, attDef.getFullName(), attDef.getValue(), attDef.getType());
   }
   
   void DTDValidator::reset()
  @@ -433,6 +390,7 @@
       //  We also check all of the attributes as well.
       //
       NameIdPoolEnumerator<DTDElementDecl> elemEnum = 
fDTDGrammar->getElemEnumerator();
  +    fDTDGrammar->setValidated(true);
       while (elemEnum.hasMoreElements())
       {
           const DTDElementDecl& curElem = elemEnum.nextElement();
  
  
  
  1.77      +1 -5      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.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- IGXMLScanner.cpp  13 Oct 2004 18:01:32 -0000      1.76
  +++ IGXMLScanner.cpp  19 Oct 2004 15:08:53 -0000      1.77
  @@ -1634,10 +1634,6 @@
           fElemStack.addChild(elemDecl->getElementName(), true);
       }
   
  -    //  Ask the element decl to clear out the 'provided' flag on all of its
  -    //  att defs.
  -    elemDecl->resetDefs();
  -
       // Skip any whitespace after the name
       fReaderMgr.skipPastSpaces();
   
  
  
  
  1.75      +3 -3      xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp
  
  Index: IGXMLScanner2.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- IGXMLScanner2.cpp 29 Sep 2004 19:23:32 -0000      1.74
  +++ IGXMLScanner2.cpp 19 Oct 2004 15:08:53 -0000      1.75
  @@ -93,8 +93,8 @@
       }
   
       const bool hasDefs = (currType && fValidate)
  -            ? currType->resetDefs()
  -            : elemDecl->resetDefs();
  +            ? currType->hasAttDefs()
  +            : elemDecl->hasAttDefs();
   
       // another set of attributes; increment element counter
       fElemCount++;
  
  
  
  1.100     +3 -3      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.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- SGXMLScanner.cpp  13 Oct 2004 18:01:32 -0000      1.99
  +++ SGXMLScanner.cpp  19 Oct 2004 15:08:53 -0000      1.100
  @@ -2096,8 +2096,8 @@
       }
   
       const bool hasDefs = (currType && fValidate) 
  -            ? currType->resetDefs()
  -            : elemDecl->resetDefs();
  +            ? currType->hasAttDefs()
  +            : elemDecl->hasAttDefs();
   
       fElemCount++;
   
  
  
  
  1.13      +20 -16    xml-xerces/c/src/xercesc/util/QName.cpp
  
  Index: QName.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/QName.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- QName.cpp 8 Sep 2004 13:56:22 -0000       1.12
  +++ QName.cpp 19 Oct 2004 15:08:53 -0000      1.13
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.13  2004/10/19 15:08:53  knoaman
  + * Performance improvement
  + *
    * Revision 1.12  2004/09/08 13:56:22  peiyongz
    * Apache License Version 2.0
    *
  @@ -341,34 +344,35 @@
                     , const unsigned int    uriId)
   {
       //set the rawName
  -    unsigned int newLen;
  -
  -    newLen = XMLString::stringLen(rawName);
  -    if (!fRawNameBufSz || (newLen > fRawNameBufSz))
  -    {
  -        fMemoryManager->deallocate(fRawName); //delete [] fRawName;
  -        fRawNameBufSz = newLen + 8;
  -        fRawName = (XMLCh*) fMemoryManager->allocate
  -        (
  -            (fRawNameBufSz + 1) * sizeof(XMLCh)
  -        ); //new XMLCh[fRawNameBufSz + 1];
  -    }
  -    XMLString::moveChars(fRawName, rawName, newLen + 1);
  -
  +    unsigned int newLen = XMLString::stringLen(rawName);
       //find out the prefix and localPart from the rawName
       const int colonInd = XMLString::indexOf(rawName, chColon);
  +
       if (colonInd >= 0)
       {
  +        if (!fRawNameBufSz || (newLen > fRawNameBufSz))
  +        {
  +            fMemoryManager->deallocate(fRawName); //delete [] fRawName;
  +            fRawNameBufSz = newLen + 8;
  +            fRawName = (XMLCh*) fMemoryManager->allocate
  +            (
  +                (fRawNameBufSz + 1) * sizeof(XMLCh)
  +            ); //new XMLCh[fRawNameBufSz + 1];
  +        }
  +        XMLString::moveChars(fRawName, rawName, newLen + 1);
           setNPrefix(rawName, colonInd);
       }
  -     else
  +    else
       {
           // No colon, so we just have a name with no prefix
           setPrefix(XMLUni::fgZeroLenString);
  +
  +        // And clean up any QName and leave it undone until/if asked for again
  +        if (fRawName)
  +            *fRawName = 0;
       }
   
       setNLocalPart(&rawName[colonInd+1], newLen-colonInd-1);
  -
   
       // And finally store the URI id parameter
       fURIId = uriId;
  
  
  

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

Reply via email to