peiyongz    2003/10/17 14:13:44

  Modified:    c/src/xercesc/validators/datatype
                        AbstractNumericFacetValidator.cpp
                        AbstractStringValidator.cpp DatatypeValidator.cpp
                        UnionDatatypeValidator.cpp
  Log:
  using XTemplateSerializer
  
  Revision  Changes    Path
  1.15      +22 -104   
xml-xerces/c/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
  
  Index: AbstractNumericFacetValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- AbstractNumericFacetValidator.cpp 7 Oct 2003 19:39:37 -0000       1.14
  +++ AbstractNumericFacetValidator.cpp 17 Oct 2003 21:13:43 -0000      1.15
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.15  2003/10/17 21:13:43  peiyongz
  + * using XTemplateSerializer
  + *
    * Revision 1.14  2003/10/07 19:39:37  peiyongz
    * Use of Template_Class Object Serialization/Deserialization API
    *
  @@ -134,6 +137,7 @@
   #include <xercesc/util/XMLDouble.hpp>
   #include <xercesc/util/XMLBigDecimal.hpp>
   #include <xercesc/util/XMLDateTime.hpp>
  +#include <xercesc/internal/XTemplateSerializer.hpp>
   
   XERCES_CPP_NAMESPACE_BEGIN
   
  @@ -893,6 +897,12 @@
       if (serEng.isStoring())
       {
   
  +        /***
  +         * don't move this line out of the if statement,
  +         * it is done purposely to allow AbstractNumericFacetValidator
  +         * read the number type information before DatatypeValidator
  +         * during loading
  +         ***/
           DatatypeValidator::serialize(serEng);
   
           serEng<<fMaxInclusiveInherited;
  @@ -910,32 +920,11 @@
   
           /***
            * Serialize RefArrayVectorOf<XMLCh>
  -         ***/
  -        if (serEng.needToWriteTemplateObject(fStrEnumeration))
  -        {
  -            int enumLength = fStrEnumeration->size();
  -            serEng<<enumLength;
  -
  -            for ( int i = 0 ; i < enumLength; i++)
  -            {            
  -                serEng.writeString(fStrEnumeration->elementAt(i));
  -            }
  -        }
  -
  -        /***
            * Serialize RefVectorOf<XMLNumber>
            ***/
  -        if (serEng.needToWriteTemplateObject(fEnumeration))
  -        {           
  -            int enumLength = fEnumeration->size();
  -            serEng<<enumLength;
  -
  -            for ( int i=0; i < enumLength; i++)
  -            {
  -                serEng<<fEnumeration->elementAt(i);
  -            }
  -        }
  -    
  +        XTemplateSerializer::storeObject(fStrEnumeration, serEng);
  +        XTemplateSerializer::storeObject(fEnumeration, serEng);
  +   
       }
       else
       {
  @@ -953,89 +942,18 @@
           serEng>>fMinExclusiveInherited;
           serEng>>fEnumerationInherited;
   
  -        fMaxInclusive=readNumber(numType, serEng);
  -        fMaxExclusive=readNumber(numType, serEng);
  -        fMinInclusive=readNumber(numType, serEng);
  -        fMinExclusive=readNumber(numType, serEng);
  -
  -        /***
  -          *  Deserialize RefArrayVectorOf<XMLCh>         
  -         ***/
  -        if (serEng.needToReadTemplateObject((void**)&fStrEnumeration))
  -        {
  -            if (!fStrEnumeration)
  -            {
  -                fStrEnumeration = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, 
true, fMemoryManager);
  -            }
  -
  -            serEng.registerTemplateObject(fStrEnumeration);
  -
  -            int enumLength = 0;
  -            serEng>>enumLength;
  -            for ( int i = 0; i < enumLength; i++)
  -            {
  -                XMLCh* enumVal;
  -                serEng.readString(enumVal);
  -                fStrEnumeration->addElement(enumVal);
  -            }
  -        }
  +        fMaxInclusive=XMLNumber::loadNumber(numType, serEng);
  +        fMaxExclusive=XMLNumber::loadNumber(numType, serEng);
  +        fMinInclusive=XMLNumber::loadNumber(numType, serEng);
  +        fMinExclusive=XMLNumber::loadNumber(numType, serEng);
   
           /***
  -          *  Deserialize RefVectorOf<XMLNumber>         
  +         *  Deserialize RefArrayVectorOf<XMLCh>         
  +         *  Deserialize RefVectorOf<XMLNumber>   
            ***/
  -        if (serEng.needToReadTemplateObject((void**)&fEnumeration))
  -        {
  -            if (!fEnumeration)
  -            {
  -                fEnumeration = new (fMemoryManager) RefVectorOf<XMLNumber>(8, true, 
fMemoryManager);
  -            }
  -
  -            serEng.registerTemplateObject(fEnumeration);
  -
  -            int enumLength = 0;
  -            serEng>>enumLength;
  -            for ( int i = 0; i < enumLength; i++)
  -            {
  -                fEnumeration->addElement(readNumber(numType, serEng));
  -            }
  -        }
  -
  -    }
  +        XTemplateSerializer::loadObject(&fStrEnumeration, 8, true, serEng);
  +        XTemplateSerializer::loadObject(&fEnumeration, 8, true, numType, serEng);
   
  -}
  -
  -XMLNumber* AbstractNumericFacetValidator::readNumber(XMLNumber::NumberType  numType
  -                                                   , XSerializeEngine&      serEng)
  -{
  -
  -    switch((XMLNumber::NumberType) numType)
  -    {
  -    case XMLNumber::Float: 
  -        XMLFloat* floatNum;
  -        serEng>>floatNum;
  -        return floatNum;
  -        break;
  -    case XMLNumber::Double:
  -        XMLDouble* doubleNum;
  -        serEng>>doubleNum;
  -        return doubleNum;
  -        break;
  -    case XMLNumber::BigDecimal: 
  -        XMLBigDecimal* bigdecimalNum;
  -        serEng>>bigdecimalNum;
  -        return bigdecimalNum;
  -        break;
  -    case XMLNumber::DateTime: 
  -        XMLDateTime* datetimeNum;
  -        serEng>>datetimeNum;
  -        return datetimeNum;
  -        break;
  -    case XMLNumber::UnKnown:
  -        return 0;
  -        break;
  -    default: //we treat this same as UnKnown
  -        return 0;
  -        break;
       }
   
   }
  
  
  
  1.15      +8 -29     
xml-xerces/c/src/xercesc/validators/datatype/AbstractStringValidator.cpp
  
  Index: AbstractStringValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AbstractStringValidator.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- AbstractStringValidator.cpp       7 Oct 2003 19:39:37 -0000       1.14
  +++ AbstractStringValidator.cpp       17 Oct 2003 21:13:43 -0000      1.15
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.15  2003/10/17 21:13:43  peiyongz
  + * using XTemplateSerializer
  + *
    * Revision 1.14  2003/10/07 19:39:37  peiyongz
    * Use of Template_Class Object Serialization/Deserialization API
    *
  @@ -138,6 +141,8 @@
   #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
   #include <xercesc/util/NumberFormatException.hpp>
   
  +#include <xercesc/internal/XTemplateSerializer.hpp>
  +
   XERCES_CPP_NAMESPACE_BEGIN
   
   static const int BUF_LEN = 64;
  @@ -767,19 +772,10 @@
   
           /***
            *
  -         *  Serialize RefArrayVectorOf<XMLCh>
  +         * Serialize RefArrayVectorOf<XMLCh>
            *
            ***/
  -        if (serEng.needToWriteTemplateObject(fEnumeration))
  -        {
  -            int enumLength = fEnumeration->size();
  -            serEng<<enumLength;
  -
  -            for ( int i = 0 ; i < enumLength; i++)
  -            {            
  -                serEng.writeString(fEnumeration->elementAt(i));
  -            }
  -        }
  +        XTemplateSerializer::storeObject(fEnumeration, serEng);
   
       }
       else
  @@ -794,24 +790,7 @@
            *  Deserialize RefArrayVectorOf<XMLCh>         
            *
           ***/
  -        if (serEng.needToReadTemplateObject((void**)&fEnumeration))
  -        {
  -            if (!fEnumeration)
  -            {
  -                fEnumeration = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, 
true, fMemoryManager);
  -            }
  -
  -            serEng.registerTemplateObject(fEnumeration);
  -
  -            int enumLength = 0;
  -            serEng>>enumLength;
  -            for ( int i = 0; i < enumLength; i++)
  -            {
  -                XMLCh* enumVal;
  -                serEng.readString(enumVal);
  -                fEnumeration->addElement(enumVal);
  -            }
  -        }
  +        XTemplateSerializer::loadObject(&fEnumeration, 8, true, serEng);
   
       }
   
  
  
  
  1.13      +7 -47     
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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DatatypeValidator.cpp     7 Oct 2003 19:39:37 -0000       1.12
  +++ DatatypeValidator.cpp     17 Oct 2003 21:13:44 -0000      1.13
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.13  2003/10/17 21:13:44  peiyongz
  + * using XTemplateSerializer
  + *
    * Revision 1.12  2003/10/07 19:39:37  peiyongz
    * Use of Template_Class Object Serialization/Deserialization API
    *
  @@ -154,6 +157,8 @@
   #include <xercesc/validators/datatype/UnionDatatypeValidator.hpp>
   #include <xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp>
   
  +#include <xercesc/internal/XTemplateSerializer.hpp>
  +
   XERCES_CPP_NAMESPACE_BEGIN
   
   
  @@ -310,35 +315,8 @@
   
           /***
            *  Serialize RefHashTableOf<KVStringPair>
  -         *
  -         *  Since the RefHashTableOf does not privide a size() method
  -         *  We have to traverse extra time to gather this information
  -         *  first, and then the second time for actual serialization.
  -         *
  -         *  We only need to serialize KVStringPair, when deserialize,
  -         *  the KVStringPair.key() can be used as the key to the hash table.
  -         *  
            ***/
  -        if (serEng.needToWriteTemplateObject(fFacets))
  -        {
  -            int itemNumber = 0;
  -
  -            RefHashTableOfEnumerator<KVStringPair> e(fFacets);
  -            while (e.hasMoreElements())
  -            {
  -                e.nextElement();
  -                itemNumber++;
  -            }
  -
  -            serEng<<itemNumber;
  -
  -            e.Reset();
  -            while (e.hasMoreElements())
  -            {
  -                KVStringPair& curPair = e.nextElement();
  -                curPair.serialize(serEng);
  -            }
  -        }
  +        XTemplateSerializer::storeObject(fFacets, serEng);
   
           serEng.writeString(fPattern);
   
  @@ -376,25 +354,7 @@
            *  Deserialize RefHashTableOf<KVStringPair>
            *
            ***/
  -         if (serEng.needToReadTemplateObject((void**)&fFacets))
  -        {
  -            if (!fFacets)
  -            {
  -                fFacets = new (fMemoryManager) RefHashTableOf<KVStringPair>(3, 
fMemoryManager);
  -            }
  -
  -            serEng.registerTemplateObject(fFacets);
  -
  -            int itemNumber = 0;
  -            serEng>>itemNumber;
  -
  -            for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
  -            {
  -                KVStringPair*  data = new (fMemoryManager) 
KVStringPair(fMemoryManager);
  -                data->serialize(serEng);
  -                fFacets->put((void*) data->getKey(), data);        
  -            }
  -        }
  +        XTemplateSerializer::loadObject(&fFacets, 3, true, serEng);
   
           serEng.readString(fPattern);
   
  
  
  
  1.14      +11 -70    
xml-xerces/c/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
  
  Index: UnionDatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- UnionDatatypeValidator.cpp        7 Oct 2003 19:39:03 -0000       1.13
  +++ UnionDatatypeValidator.cpp        17 Oct 2003 21:13:44 -0000      1.14
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.14  2003/10/17 21:13:44  peiyongz
  + * using XTemplateSerializer
  + *
    * Revision 1.13  2003/10/07 19:39:03  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -122,6 +125,8 @@
   #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
   #include <xercesc/util/OutOfMemoryException.hpp>
   
  +#include <xercesc/internal/XTemplateSerializer.hpp>
  +
   XERCES_CPP_NAMESPACE_BEGIN
   
   static const int BUF_LEN = 64;
  @@ -465,36 +470,11 @@
           serEng<<fMemberTypesInherited;
   
           /***
  -         *
            * Serialize RefArrayVectorOf<XMLCh>
  -         *
  -         ***/
  -        if (serEng.needToWriteTemplateObject(fEnumeration))
  -        {
  -            int enumLength = fEnumeration->size();
  -            serEng<<enumLength;
  -
  -            for ( int i = 0 ; i < enumLength; i++)
  -            {            
  -                serEng.writeString(fEnumeration->elementAt(i));
  -            }
  -        }
  -
  -        /***
  -         *
            * Serialize RefVectorOf<DatatypeValidator>
  -         *
            ***/
  -        if (serEng.needToWriteTemplateObject(fMemberTypeValidators))
  -        {
  -            int vectorLength = fMemberTypeValidators->size();
  -            serEng<<vectorLength;
  -
  -            for ( int i = 0 ; i < vectorLength; i++)
  -            {
  -                DatatypeValidator::storeDV(serEng, 
fMemberTypeValidators->elementAt(i));
  -            }
  -        }
  +        XTemplateSerializer::storeObject(fEnumeration, serEng);
  +        XTemplateSerializer::storeObject(fMemberTypeValidators, serEng);
   
           DatatypeValidator::storeDV(serEng, fValidatedDatatype);
   
  @@ -505,50 +485,11 @@
           serEng>>fMemberTypesInherited;
   
           /***
  -         *
            * Deserialize RefArrayVectorOf<XMLCh>
  -         *
  -         ***/    
  -        if (serEng.needToReadTemplateObject((void**)&fEnumeration))
  -        {
  -            if (!fEnumeration)
  -            {
  -                fEnumeration = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, 
true, fMemoryManager);
  -            }
  -
  -            serEng.registerTemplateObject(fEnumeration);
  -
  -            int enumLength = 0;
  -            serEng>>enumLength;
  -            for ( int i = 0; i < enumLength; i++)
  -            {
  -                XMLCh* enumVal;
  -                serEng.readString(enumVal);
  -                fEnumeration->addElement(enumVal);
  -            }
  -        }
  -
  -        /***
  -         *
            * Deserialize RefVectorOf<DatatypeValidator>
  -         *
  -         ***/
  -        if (serEng.needToReadTemplateObject((void**)&fMemberTypeValidators))
  -        {
  -            if (!fMemberTypeValidators)
  -            {
  -                fMemberTypeValidators = new (fMemoryManager) 
RefVectorOf<DatatypeValidator>(8, true, fMemoryManager);
  -            }
  -
  -            serEng.registerTemplateObject(fMemberTypeValidators);
  -
  -            int vectorLength = 0;
  -            serEng>>vectorLength;
  -            for ( int i = 0 ; i < vectorLength; i++)
  -            {            
  -                
fMemberTypeValidators->addElement(DatatypeValidator::loadDV(serEng));
  -            }
  -        }
  +         ***/    
  +        XTemplateSerializer::loadObject(&fEnumeration, 8, true, serEng);
  +        XTemplateSerializer::loadObject(&fMemberTypeValidators, 8, true, serEng);
   
           fValidatedDatatype = DatatypeValidator::loadDV(serEng);
   
  
  
  

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

Reply via email to