knoaman     2003/09/30 18:09:35

  Modified:    c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp
               c/src/xercesc/validators/datatype
                        AnySimpleTypeDatatypeValidator.cpp
                        AnySimpleTypeDatatypeValidator.hpp
                        DatatypeValidator.cpp DatatypeValidator.hpp
                        StringDatatypeValidator.cpp
                        StringDatatypeValidator.hpp
               c/src/xercesc/validators/schema SchemaValidator.cpp
  Log:
  Refactoring of some code to improve performance.
  
  Revision  Changes    Path
  1.31      +53 -36    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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- IGXMLScanner2.cpp 14 Aug 2003 02:56:41 -0000      1.30
  +++ IGXMLScanner2.cpp 1 Oct 2003 01:09:34 -0000       1.31
  @@ -366,13 +366,16 @@
                   //  If we found an attdef for this one, then lets validate it.
                   if (fNormalizeData)
                   {
  -                    // normalize the attribute according to schema whitespace facet
  -                    XMLBufBid bbtemp(&fBufMgr);
  -                    XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
                       DatatypeValidator* tempDV = ((SchemaAttDef*) 
attDefForWildCard)->getDatatypeValidator();
  -                    ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, 
normBuf.getRawBuffer(), tempBuf);
  -                    normBuf.set(tempBuf.getRawBuffer());
  +                    if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                    {
  +                        // normalize the attribute according to schema whitespace 
facet
  +                        XMLBufBid bbtemp(&fBufMgr);
  +                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, normBuf.getRawBuffer(), tempBuf);
  +                        normBuf.set(tempBuf.getRawBuffer());
  +                    }
                   }
   
                   if (fValidate && !skipThisOne) {
  @@ -408,13 +411,16 @@
                   {
                       if (fNormalizeData && (fGrammarType == 
Grammar::SchemaGrammarType))
                       {
  -                        // normalize the attribute according to schema whitespace 
facet
  -                        XMLBufBid bbtemp(&fBufMgr);
  -                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
                           DatatypeValidator* tempDV = ((SchemaAttDef*) 
attDef)->getDatatypeValidator();
  -                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, normBuf.getRawBuffer(), tempBuf);
  -                        normBuf.set(tempBuf.getRawBuffer());
  +                        if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                        {
  +                            // normalize the attribute according to schema 
whitespace facet
  +                            XMLBufBid bbtemp(&fBufMgr);
  +                            XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                            ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, normBuf.getRawBuffer(), tempBuf);
  +                            normBuf.set(tempBuf.getRawBuffer());
  +                        }
                       }
   
                       if (fValidate && !skipThisOne)
  @@ -651,7 +657,6 @@
   
       // Get the type and name
       const XMLAttDef::AttTypes type = attDef->getType();
  -    const XMLCh* const attrName = attDef->getFullName();
   
       // Assume its going to go fine, and empty the target buffer in preperation
       bool retVal = true;
  @@ -681,7 +686,7 @@
           //  not allowed in attribute values.
           if (!escaped && (*srcPtr == chOpenAngle))
           {
  -            emitError(XMLErrs::BracketInAttrValue, attrName);
  +            emitError(XMLErrs::BracketInAttrValue, attDef->getFullName());
               retVal = false;
           }
   
  @@ -697,7 +702,7 @@
                       {
                            // Can't have a standalone document declaration of "yes" 
if  attribute
                            // values are subject to normalisation
  -                         fValidator->emitError(XMLValid::NoAttNormForStandalone, 
attrName);
  +                         fValidator->emitError(XMLValid::NoAttNormForStandalone, 
attDef->getFullName());
                            if(fGrammarType == Grammar::SchemaGrammarType) {
                                ((SchemaAttDef 
*)(attDef))->setValidity(PSVIDefs::INVALID);
                            }
  @@ -739,7 +744,7 @@
                           {
                               // Can't have a standalone document declaration of 
"yes" if  attribute
                               // values are subject to normalisation
  -                            fValidator->emitError(XMLValid::NoAttNormForStandalone, 
attrName);
  +                            fValidator->emitError(XMLValid::NoAttNormForStandalone, 
attDef->getFullName());
                               if(fGrammarType == Grammar::SchemaGrammarType) {
                                   ((SchemaAttDef 
*)(attDef))->setValidity(PSVIDefs::INVALID);
                               }
  @@ -1054,14 +1059,18 @@
                   else
                   {
                       if (fNormalizeData) {
  -                        // normalize the character according to schema whitespace 
facet
  -                        XMLBufBid bbtemp(&fBufMgr);
  -                        XMLBuffer& tempBuf = bbtemp.getBuffer();
   
                           DatatypeValidator* tempDV = ((SchemaElementDecl*) 
topElem->fThisElement)->getDatatypeValidator();
  -                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, rawBuf,  tempBuf);
  -                        rawBuf = tempBuf.getRawBuffer();
  -                        len = tempBuf.getLen();
  +                        if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                        {
  +                            // normalize the character according to schema 
whitespace facet
  +                            XMLBufBid bbtemp(&fBufMgr);
  +                            XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                            ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, rawBuf,  tempBuf);
  +                            rawBuf = tempBuf.getRawBuffer();
  +                            len = tempBuf.getLen();
  +                        }
                       }
   
                       // tell the schema validation about the character data for 
checkContent later
  @@ -1091,14 +1100,18 @@
                   else
                   {
                       if (fNormalizeData) {
  -                        // normalize the character according to schema whitespace 
facet
  -                        XMLBufBid bbtemp(&fBufMgr);
  -                        XMLBuffer& tempBuf = bbtemp.getBuffer();
   
                           DatatypeValidator* tempDV = ((SchemaElementDecl*) 
topElem->fThisElement)->getDatatypeValidator();
  -                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, rawBuf,  tempBuf);
  -                        rawBuf = tempBuf.getRawBuffer();
  -                        len = tempBuf.getLen();
  +                        if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                        {
  +                            // normalize the character according to schema 
whitespace facet
  +                            XMLBufBid bbtemp(&fBufMgr);
  +                            XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                            ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, rawBuf,  tempBuf);
  +                            rawBuf = tempBuf.getRawBuffer();
  +                            len = tempBuf.getLen();
  +                        }
                       }
   
                       // tell the schema validation about the character data for 
checkContent later
  @@ -2100,14 +2113,18 @@
   
               if (fGrammarType == Grammar::SchemaGrammarType) {
   
  -                if (fNormalizeData) {
  -                    // normalize the character according to schema whitespace facet
  -                    XMLBufBid bbtemp(&fBufMgr);
  -                    XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
  +                if (fNormalizeData)
  +                {
                       DatatypeValidator* tempDV = ((SchemaElementDecl*) 
topElem->fThisElement)->getDatatypeValidator();
  -                    ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, 
bbCData.getRawBuffer(),  tempBuf);
  -                    bbCData.set(tempBuf.getRawBuffer());
  +                    if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                    {
  +                        // normalize the character according to schema whitespace 
facet
  +                        XMLBufBid bbtemp(&fBufMgr);
  +                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, bbCData.getRawBuffer(),  tempBuf);
  +                        bbCData.set(tempBuf.getRawBuffer());
  +                    }
                   }
   
                   if (fValidate) {
  
  
  
  1.36      +52 -34    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.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- SGXMLScanner.cpp  22 Sep 2003 19:51:41 -0000      1.35
  +++ SGXMLScanner.cpp  1 Oct 2003 01:09:34 -0000       1.36
  @@ -2228,13 +2228,16 @@
                   //  If we found an attdef for this one, then lets validate it.
                   if (fNormalizeData)
                   {
  -                    // normalize the attribute according to schema whitespace facet
  -                    XMLBufBid bbtemp(&fBufMgr);
  -                    XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
                       DatatypeValidator* tempDV = ((SchemaAttDef*) 
attDefForWildCard)->getDatatypeValidator();
  -                    ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, 
normBuf.getRawBuffer(), tempBuf);
  -                    normBuf.set(tempBuf.getRawBuffer());
  +                    if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                    {
  +                        // normalize the attribute according to schema whitespace 
facet
  +                        XMLBufBid bbtemp(&fBufMgr);
  +                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, normBuf.getRawBuffer(), tempBuf);
  +                        normBuf.set(tempBuf.getRawBuffer());
  +                    }
                   }
   
                   if (fValidate && !skipThisOne) {
  @@ -2268,13 +2271,16 @@
                   {
                       if (fNormalizeData && (fGrammarType == 
Grammar::SchemaGrammarType))
                       {
  -                        // normalize the attribute according to schema whitespace 
facet
  -                        XMLBufBid bbtemp(&fBufMgr);
  -                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
                           DatatypeValidator* tempDV = ((SchemaAttDef*) 
attDef)->getDatatypeValidator();
  -                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, normBuf.getRawBuffer(), tempBuf);
  -                        normBuf.set(tempBuf.getRawBuffer());
  +                        if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                        {
  +                            // normalize the attribute according to schema 
whitespace facet
  +                            XMLBufBid bbtemp(&fBufMgr);
  +                            XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                            ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, normBuf.getRawBuffer(), tempBuf);
  +                            normBuf.set(tempBuf.getRawBuffer());
  +                        }
                       }
   
                       if (fValidate && !skipThisOne)
  @@ -2844,14 +2850,18 @@
                   XMLBuffer toFill(len+1, fMemoryManager);
                   toFill.set(rawBuf);
   
  -                if (fNormalizeData) {
  -                    // normalize the character according to schema whitespace facet
  -                    XMLBufBid bbtemp(&fBufMgr);
  -                    XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
  +                if (fNormalizeData)
  +                {
                       DatatypeValidator* tempDV = ((SchemaElementDecl*) 
topElem->fThisElement)->getDatatypeValidator();
  -                    ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, 
toFill.getRawBuffer(),  tempBuf);
  -                    toFill.set(tempBuf.getRawBuffer());
  +                    if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                    {
  +                        // normalize the character according to schema whitespace 
facet
  +                        XMLBufBid bbtemp(&fBufMgr);
  +                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, toFill.getRawBuffer(),  tempBuf);
  +                        toFill.set(tempBuf.getRawBuffer());
  +                    }
                   }
   
                   // tell the schema validation about the character data for 
checkContent later
  @@ -2878,14 +2888,18 @@
                   XMLBuffer toFill(len+1, fMemoryManager);
                   toFill.set(rawBuf);
   
  -                if (fNormalizeData) {
  -                    // normalize the character according to schema whitespace facet
  -                    XMLBufBid bbtemp(&fBufMgr);
  -                    XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
  +                if (fNormalizeData)
  +                {
                       DatatypeValidator* tempDV = ((SchemaElementDecl*) 
topElem->fThisElement)->getDatatypeValidator();
  -                    ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, 
toFill.getRawBuffer(),  tempBuf);
  -                    toFill.set(tempBuf.getRawBuffer());
  +                    if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                    {
  +                        // normalize the character according to schema whitespace 
facet
  +                        XMLBufBid bbtemp(&fBufMgr);
  +                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, toFill.getRawBuffer(),  tempBuf);
  +                        toFill.set(tempBuf.getRawBuffer());
  +                    }
                   }
   
                   // tell the schema validation about the character data for 
checkContent later
  @@ -3629,14 +3643,18 @@
   
               if (fValidate) {
   
  -                if (fNormalizeData) {
  -                    // normalize the character according to schema whitespace facet
  -                    XMLBufBid bbtemp(&fBufMgr);
  -                    XMLBuffer& tempBuf = bbtemp.getBuffer();
  -
  +                if (fNormalizeData)
  +                {
                       DatatypeValidator* tempDV = ((SchemaElementDecl*) 
topElem->fThisElement)->getDatatypeValidator();
  -                    ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, 
bbCData.getRawBuffer(),  tempBuf);
  -                    bbCData.set(tempBuf.getRawBuffer());
  +                    if (tempDV && tempDV->getWSFacet() != 
DatatypeValidator::PRESERVE)
  +                    {
  +                        // normalize the character according to schema whitespace 
facet
  +                        XMLBufBid bbtemp(&fBufMgr);
  +                        XMLBuffer& tempBuf = bbtemp.getBuffer();
  +
  +                        ((SchemaValidator*) 
fValidator)->normalizeWhiteSpace(tempDV, bbCData.getRawBuffer(),  tempBuf);
  +                        bbCData.set(tempBuf.getRawBuffer());
  +                    }
                   }
   
                   // tell the schema validation about the character data for 
checkContent later
  
  
  
  1.7       +4 -1      
xml-xerces/c/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
  
  Index: AnySimpleTypeDatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AnySimpleTypeDatatypeValidator.cpp        15 May 2003 18:53:26 -0000      1.6
  +++ AnySimpleTypeDatatypeValidator.cpp        1 Oct 2003 01:09:35 -0000       1.7
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.7  2003/10/01 01:09:35  knoaman
  + * Refactoring of some code to improve performance.
  + *
    * Revision 1.6  2003/05/15 18:53:26  knoaman
    * Partial implementation of the configurable memory manager.
    *
  @@ -95,7 +98,7 @@
   AnySimpleTypeDatatypeValidator::AnySimpleTypeDatatypeValidator(MemoryManager* const 
manager)
       : DatatypeValidator(0, 0, SchemaSymbols::XSD_RESTRICTION, 
DatatypeValidator::AnySimpleType, manager)
   {
  -
  +    setWhiteSpace(DatatypeValidator::PRESERVE);
   }
   
   AnySimpleTypeDatatypeValidator::~AnySimpleTypeDatatypeValidator()
  
  
  
  1.7       +1 -12     
xml-xerces/c/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
  
  Index: AnySimpleTypeDatatypeValidator.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AnySimpleTypeDatatypeValidator.hpp        15 May 2003 18:53:26 -0000      1.6
  +++ AnySimpleTypeDatatypeValidator.hpp        1 Oct 2003 01:09:35 -0000       1.7
  @@ -100,12 +100,6 @@
       //@{
   
       /**
  -      * Returns default value (collapse) for whiteSpace facet.
  -      * This function is overwritten in StringDatatypeValidator.
  -      */
  -    short getWSFacet () const;
  -
  -    /**
         * Returns whether the type is atomic or not
         */
       virtual bool isAtomic() const;
  @@ -174,11 +168,6 @@
   // ---------------------------------------------------------------------------
   //  DatatypeValidator: Getters
   // ---------------------------------------------------------------------------
  -inline short AnySimpleTypeDatatypeValidator::getWSFacet() const {
  -
  -    return DatatypeValidator::PRESERVE;
  -}
  -
   inline bool AnySimpleTypeDatatypeValidator::isAtomic() const {
   
       return false;
  
  
  
  1.10      +4 -0      
xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.cpp
  
  Index: DatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DatatypeValidator.cpp     30 Sep 2003 21:32:23 -0000      1.9
  +++ DatatypeValidator.cpp     1 Oct 2003 01:09:35 -0000       1.10
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.10  2003/10/01 01:09:35  knoaman
  + * Refactoring of some code to improve performance.
  + *
    * Revision 1.9  2003/09/30 21:32:23  peiyongz
    * AnyURI, Base64, HexBin, NOTATION, List and QName
    *
  @@ -159,6 +162,7 @@
                                        MemoryManager* const manager)
       : fMemoryManager(manager)
       , fAnonymous(false)
  +    , fWhiteSpace(COLLAPSE)
       , fFinalSet(finalSet)
       , fFacetsDefined(0)
       , fFixed(0)
  
  
  
  1.14      +14 -4     
xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.hpp
  
  Index: DatatypeValidator.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DatatypeValidator.hpp     29 Sep 2003 21:47:35 -0000      1.13
  +++ DatatypeValidator.hpp     1 Oct 2003 01:09:35 -0000       1.14
  @@ -67,7 +67,6 @@
   #include <xercesc/util/XMLUniDefs.hpp>
   #include <xercesc/util/regx/RegularExpression.hpp>
   #include <xercesc/validators/schema/SchemaSymbols.hpp>
  -
   #include <xercesc/internal/XSerializable.hpp>
   
   XERCES_CPP_NAMESPACE_BEGIN
  @@ -183,7 +182,7 @@
         * Returns default value (collapse) for whiteSpace facet.
         * This function is overwritten in StringDatatypeValidator.
         */
  -    virtual short getWSFacet () const;
  +    short getWSFacet () const;
   
       /**
         * Returns the base datatype validator if set.
  @@ -379,6 +378,11 @@
       void setType(ValidatorType);
   
       /**
  +      * set fWhiteSpace
  +      */
  +    void setWhiteSpace(short);
  +
  +    /**
         * get WSString
         */
       const XMLCh*   getWSstring(const short WSType) const;
  @@ -442,6 +446,7 @@
       //
       // -----------------------------------------------------------------------
       bool                          fAnonymous;
  +    short                         fWhiteSpace;
       int                           fFinalSet;
       int                           fFacetsDefined;
       int                           fFixed;
  @@ -476,7 +481,7 @@
   
   inline short DatatypeValidator::getWSFacet() const {
   
  -    return COLLAPSE;
  +    return fWhiteSpace;
   }
   
   inline DatatypeValidator::ValidatorType DatatypeValidator::getType() const
  @@ -535,6 +540,11 @@
   inline void DatatypeValidator::setType(ValidatorType theType)
   {
       fType = theType;
  +}
  +
  +inline void DatatypeValidator::setWhiteSpace(short newValue)
  +{
  +    fWhiteSpace = newValue;
   }
   
   inline void DatatypeValidator::setFacetsDefined(int facets)
  
  
  
  1.8       +8 -9      
xml-xerces/c/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
  
  Index: StringDatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/StringDatatypeValidator.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StringDatatypeValidator.cpp       30 Sep 2003 21:31:37 -0000      1.7
  +++ StringDatatypeValidator.cpp       1 Oct 2003 01:09:35 -0000       1.8
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.8  2003/10/01 01:09:35  knoaman
  + * Refactoring of some code to improve performance.
  + *
    * Revision 1.7  2003/09/30 21:31:37  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -147,8 +150,9 @@
   // ---------------------------------------------------------------------------
   StringDatatypeValidator::StringDatatypeValidator(MemoryManager* const manager)
   :AbstractStringValidator(0, 0, 0, DatatypeValidator::String, manager)
  -,fWhiteSpace(DatatypeValidator::PRESERVE)
  -{}
  +{
  +    setWhiteSpace(DatatypeValidator::PRESERVE);
  +}
   
   StringDatatypeValidator::StringDatatypeValidator(
                             DatatypeValidator*            const baseValidator
  @@ -157,8 +161,8 @@
                           , const int                           finalSet
                           , MemoryManager* const                manager)
   :AbstractStringValidator(baseValidator, facets, finalSet, 
DatatypeValidator::String, manager)
  -,fWhiteSpace(DatatypeValidator::PRESERVE)
   {
  +    setWhiteSpace(DatatypeValidator::PRESERVE);
       init(enums);
   }
   
  @@ -183,14 +187,9 @@
                           , const ValidatorType                 type
                           , MemoryManager* const                manager)
   :AbstractStringValidator(baseValidator, facets, finalSet, type, manager)
  -,fWhiteSpace(DatatypeValidator::PRESERVE)
   {
  +    setWhiteSpace(DatatypeValidator::PRESERVE);
       // do not invoke init() here!!!
  -}
  -
  -short StringDatatypeValidator::getWSFacet() const
  -{
  -    return fWhiteSpace;
   }
   
   // ---------------------------------------------------------------------------
  
  
  
  1.6       +4 -30     
xml-xerces/c/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
  
  Index: StringDatatypeValidator.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/StringDatatypeValidator.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StringDatatypeValidator.hpp       29 Sep 2003 21:47:35 -0000      1.5
  +++ StringDatatypeValidator.hpp       1 Oct 2003 01:09:35 -0000       1.6
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.6  2003/10/01 01:09:35  knoaman
  + * Refactoring of some code to improve performance.
  + *
    * Revision 1.5  2003/09/29 21:47:35  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -122,16 +125,6 @@
   
        //@}
   
  -    // -----------------------------------------------------------------------
  -    // Getter methods
  -    // -----------------------------------------------------------------------
  -    /** @name Getter Functions */
  -    //@{
  -
  -    virtual short getWSFacet() const;
  -
  -    //@}
  -
       /**
         * Returns an instance of the base datatype validator class
          * Used by the DatatypeValidatorFactory.
  @@ -175,26 +168,7 @@
       virtual void checkValueSpace(const XMLCh* const content);
   
       virtual int  getLength(const XMLCh* const content) const;
  -
  -private:
  -
  -    inline void setWhiteSpace(short);
  -
  -    // -----------------------------------------------------------------------
  -    //  Private data members
  -    //
  -    // -----------------------------------------------------------------------
  -     short                fWhiteSpace;         //DatatypeValidator::PRESERVE
  -
   };
  -
  -// -----------------------------------------------------------------------
  -// Getter methods
  -// -----------------------------------------------------------------------
  -inline void StringDatatypeValidator::setWhiteSpace(short newValue)
  -{
  -    fWhiteSpace = newValue;
  -}
   
   XERCES_CPP_NAMESPACE_END
   
  
  
  
  1.37      +15 -23    xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp
  
  Index: SchemaValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- SchemaValidator.cpp       14 Aug 2003 03:01:04 -0000      1.36
  +++ SchemaValidator.cpp       1 Oct 2003 01:09:35 -0000       1.37
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.37  2003/10/01 01:09:35  knoaman
  + * Refactoring of some code to improve performance.
  + *
    * Revision 1.36  2003/08/14 03:01:04  knoaman
    * Code refactoring to improve performance of validation.
    *
  @@ -626,7 +629,6 @@
       //
       XMLAttDef::AttTypes            type      = attDef->getType();
       const XMLAttDef::DefAttTypes   defType   = attDef->getDefaultType();
  -    const XMLCh* const             fullName  = attDef->getFullName();
       bool valid = true;
   
       //
  @@ -641,7 +643,7 @@
       {
           const XMLCh* const valueText = attDef->getValue();
           if (!XMLString::equals(attrValue, valueText)) {
  -            emitError(XMLValid::NotSameAsFixedValue, fullName, attrValue, 
valueText);
  +            emitError(XMLValid::NotSameAsFixedValue, attDef->getFullName(), 
attrValue, valueText);
               valid = false;
           }
       }
  @@ -649,7 +651,7 @@
       // An empty string cannot be valid for non_CDATA any of the other types
       if (!attrValue[0] && type != XMLAttDef::Simple)
       {
  -        emitError(XMLValid::InvalidEmptyAttValue, fullName);
  +        emitError(XMLValid::InvalidEmptyAttValue, attDef->getFullName());
           ((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
           ((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::INVALID);
           return;
  @@ -657,7 +659,7 @@
   
       DatatypeValidator* attDefDV = ((SchemaAttDef*) attDef)->getDatatypeValidator();
       if (!attDefDV) {
  -        emitError(XMLValid::NoDatatypeValidatorForAttribute, fullName);
  +        emitError(XMLValid::NoDatatypeValidatorForAttribute, attDef->getFullName());
           valid = false;
       }
       else {
  @@ -1209,16 +1211,14 @@
   //
   void SchemaValidator::normalizeWhiteSpace(DatatypeValidator* dV, const XMLCh* const 
value, XMLBuffer& toFill)
   {
  +    short wsFacet = dV->getWSFacet();
  +
       toFill.reset();
   
       //empty string
       if (!*value)
           return;
   
  -    short fWhiteSpace = DatatypeValidator::PRESERVE;
  -    if (dV)
  -        fWhiteSpace = dV->getWSFacet();
  -
       enum States
       {
           InWhitespace
  @@ -1227,27 +1227,20 @@
   
       States curState = InContent;
   
  -    //
  -    //  Loop through the chars of the source value and normalize it according
  -    //  to the whitespace facet
  -    //
  +    //  Loop through the chars of the source value and normalize it
  +    //  according to the whitespace facet
       bool firstNonWS = false;
       XMLCh nextCh;
       const XMLCh* srcPtr = value;
       XMLReader* fCurReader = getReaderMgr()->getCurrentReader();
   
  -    if ((fWhiteSpace==DatatypeValidator::COLLAPSE) && fTrailing)
  +    if ((wsFacet==DatatypeValidator::COLLAPSE) && fTrailing)
           toFill.append(chSpace);
   
       while (*srcPtr)
       {
           nextCh = *srcPtr;
  -
  -        if (fWhiteSpace == DatatypeValidator::PRESERVE)
  -        {
  -            // do nothing
  -        }
  -        else if (fWhiteSpace == DatatypeValidator::REPLACE)
  +        if (wsFacet == DatatypeValidator::REPLACE)
           {
               if (fCurReader->isWhitespace(nextCh))
                   nextCh = chSpace;
  @@ -1263,13 +1256,13 @@
                       curState = InContent;
                       firstNonWS = true;
                   }
  -                 else
  +                else
                   {
                       srcPtr++;
                       continue;
                   }
               }
  -             else if (curState == InContent)
  +            else if (curState == InContent)
               {
                   if (fCurReader->isWhitespace(nextCh))
                   {
  @@ -1286,8 +1279,7 @@
           // And move up to the next character in the source
           srcPtr++;
       }
  -    srcPtr--;
  -    if (fCurReader->isWhitespace(*srcPtr))
  +    if (fCurReader->isWhitespace(*(srcPtr-1)))
           fTrailing = true;
   }
   
  
  
  

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

Reply via email to