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]