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]