peiyongz 2003/10/10 09:25:40
Modified: c/src/xercesc/validators/schema ComplexTypeInfo.cpp
ComplexTypeInfo.hpp SchemaAttDef.cpp
SchemaAttDef.hpp SchemaAttDefList.cpp
SchemaAttDefList.hpp
Log:
Implementation of Serialization/Deserialization
Revision Changes Path
1.12 +215 -0 xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp
Index: ComplexTypeInfo.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ComplexTypeInfo.cpp 8 Oct 2003 21:33:48 -0000 1.11
+++ ComplexTypeInfo.cpp 10 Oct 2003 16:25:40 -0000 1.12
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.12 2003/10/10 16:25:40 peiyongz
+ * Implementation of Serialization/Deserialization
+ *
* Revision 1.11 2003/10/08 21:33:48 peiyongz
* Synchronize ContentSpec/ContentModel/FormattedModel
*
@@ -887,6 +890,218 @@
fMemoryManager->deallocate(fContentSpecOrgURI); //delete [] fContentSpecOrgURI;
fContentSpecOrgURI = newContentSpecOrgURI;
fContentSpecOrgURISize = newSize;
+}
+
+/***
+ * Support for Serialization/De-serialization
+ ***/
+
+IMPL_XSERIALIZABLE_TOCREATE(ComplexTypeInfo)
+
+void ComplexTypeInfo::serialize(XSerializeEngine& serEng)
+{
+
+ if (serEng.isStoring())
+ {
+ serEng<<fAnonymous;
+ serEng<<fAbstract;
+ serEng<<fAdoptContentSpec;
+ serEng<<fAttWithTypeId;
+ serEng<<fPreprocessed;
+ serEng<<fDerivedBy;
+ serEng<<fBlockSet;
+ serEng<<fFinalSet;
+ serEng<<fScopeDefined;
+ serEng<<fElementId;
+ serEng<<fContentType;
+
+ serEng.writeString(fTypeName);
+ serEng.writeString(fTypeLocalName);
+ serEng.writeString(fTypeUri);
+
+ DatatypeValidator::storeDV(serEng, fBaseDatatypeValidator);
+ DatatypeValidator::storeDV(serEng, fDatatypeValidator);
+
+ serEng<<fBaseComplexTypeInfo;
+ serEng<<fContentSpec;
+ serEng<<fAttWildCard;
+ serEng<<fAttList;
+
+ /***
+ * TO DO: once SchemaElementDecl is done
+ * Serialize RefVectorOf<SchemaElementDecl>* fElements;
+ *
+ ***/
+
+ /***
+ *
+ * Serialize RefVectorOf<ContentSpecNode>
+ *
+ ***/
+ if (serEng.needToWriteTemplateObject(fSpecNodesToDelete))
+ {
+ int vectorLength = fSpecNodesToDelete->size();
+ serEng<<vectorLength;
+
+ for ( int i = 0 ; i < vectorLength; i++)
+ {
+ serEng<<fSpecNodesToDelete->elementAt(i);
+ }
+ }
+
+ /***
+ *
+ * Serialize RefHash2KeysTableOf<SchemaAttDef>* fAttDefs;
+ *
+ ***/
+ if (serEng.needToWriteTemplateObject(fAttDefs))
+ {
+ int itemNumber = 0;
+
+ RefHash2KeysTableOfEnumerator<SchemaAttDef> e(fAttDefs);
+ while (e.hasMoreElements())
+ {
+ e.nextElement();
+ itemNumber++;
+ }
+
+ serEng<<itemNumber;
+
+ e.Reset();
+ while (e.hasMoreElements())
+ {
+ SchemaAttDef& attDef = e.nextElement();
+ attDef.serialize(serEng);
+ }
+
+ }
+
+ /***
+ * Don't serialize
+ *
+ * fContentModel;
+ * fFormattedModel;
+ *
+ ***/
+
+ serEng<<*fContentSpecOrgURI;
+ serEng<<fUniqueURI;
+ serEng<<fContentSpecOrgURISize;
+
+ /***
+ * don't serialize
+ * TODO
+ * fLocator;
+ ***/
+
+ }
+ else
+ {
+ serEng>>fAnonymous;
+ serEng>>fAbstract;
+ serEng>>fAdoptContentSpec;
+ serEng>>fAttWithTypeId;
+ serEng>>fPreprocessed;
+ serEng>>fDerivedBy;
+ serEng>>fBlockSet;
+ serEng>>fFinalSet;
+ serEng>>fScopeDefined;
+ serEng>>fElementId;
+ serEng>>fContentType;
+
+ serEng.readString(fTypeName);
+ serEng.writeString(fTypeLocalName);
+ serEng.writeString(fTypeUri);
+
+ fBaseDatatypeValidator = DatatypeValidator::loadDV(serEng);
+ fDatatypeValidator = DatatypeValidator::loadDV(serEng);
+
+ serEng>>fBaseComplexTypeInfo;
+ serEng>>fContentSpec;
+ serEng>>fAttWildCard;
+ serEng>>fAttList;
+
+ /***
+ * TO DO: once SchemaElementDecl is done
+ * Deserialize RefVectorOf<SchemaElementDecl>* fElements;
+ *
+ ***/
+
+ /***
+ *
+ * Deserialize RefVectorOf<ContentSpecNode>* ;
+ *
+ ***/
+ if (serEng.needToReadTemplateObject((void**)&fSpecNodesToDelete))
+ {
+ if (!fSpecNodesToDelete)
+ {
+ fSpecNodesToDelete = new (fMemoryManager)
RefVectorOf<ContentSpecNode>(8, true, fMemoryManager);
+ }
+
+ serEng.registerTemplateObject(fSpecNodesToDelete);
+
+ int vectorLength = 0;
+ serEng>>vectorLength;
+ for ( int i = 0 ; i < vectorLength; i++)
+ {
+ ContentSpecNode* node;
+ serEng>>node;
+ fSpecNodesToDelete->addElement(node);
+ }
+ }
+
+ /***
+ *
+ * Deserialize RefHash2KeysTableOf<SchemaAttDef>* fAttDefs;
+ *
+ ***/
+ if (serEng.needToReadTemplateObject((void**)&fAttDefs))
+ {
+ if (!fAttDefs)
+ {
+ fAttDefs = new (fMemoryManager)
RefHash2KeysTableOf<SchemaAttDef>(3, fMemoryManager);
+ }
+
+ serEng.registerTemplateObject(fAttDefs);
+
+ int itemNumber = 0;
+ serEng>>itemNumber;
+
+ for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
+ {
+ SchemaAttDef* data = new (fMemoryManager)
SchemaAttDef(fMemoryManager);
+ data->serialize(serEng);
+ fAttDefs->put(data->getAttName()->getLocalPart(), data->getId(),
data);
+ }
+ }
+
+ /***
+ * Don't serialize
+ *
+ * fContentModel;
+ * fFormattedModel;
+ *
+ ***/
+
+ fContentModel = 0;
+ fFormattedModel = 0;
+
+ unsigned int i;
+
+ serEng>>i;
+ *fContentSpecOrgURI = i;
+
+ serEng>>fUniqueURI;
+ serEng>>fContentSpecOrgURISize;
+
+ /***
+ * don't serialize
+ * TODO
+ * fLocator;
+ ***/
+ fLocator = 0;
+ }
}
XERCES_CPP_NAMESPACE_END
1.16 +7 -1 xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp
Index: ComplexTypeInfo.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ComplexTypeInfo.hpp 8 Oct 2003 21:33:48 -0000 1.15
+++ ComplexTypeInfo.hpp 10 Oct 2003 16:25:40 -0000 1.16
@@ -77,6 +77,7 @@
#include <xercesc/framework/XMLElementDecl.hpp>
#include <xercesc/framework/XMLContentModel.hpp>
#include <xercesc/validators/schema/SchemaAttDef.hpp>
+#include <xercesc/internal/XSerializable.hpp>
XERCES_CPP_NAMESPACE_BEGIN
@@ -91,7 +92,7 @@
class XSDLocator;
-class VALIDATORS_EXPORT ComplexTypeInfo : public XMemory
+class VALIDATORS_EXPORT ComplexTypeInfo : public XSerializable, public XMemory
{
public:
// -----------------------------------------------------------------------
@@ -190,6 +191,11 @@
, XMLStringPool* const pStringPool
, XMLValidator* const pValidator
) ;
+
+ /***
+ * Support for Serialization/De-serialization
+ ***/
+ DECL_XSERIALIZABLE(ComplexTypeInfo)
private:
// -----------------------------------------------------------------------
1.7 +87 -0 xml-xerces/c/src/xercesc/validators/schema/SchemaAttDef.cpp
Index: SchemaAttDef.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaAttDef.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SchemaAttDef.cpp 18 May 2003 14:02:07 -0000 1.6
+++ SchemaAttDef.cpp 10 Oct 2003 16:25:40 -0000 1.7
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.7 2003/10/10 16:25:40 peiyongz
+ * Implementation of Serialization/Deserialization
+ *
* Revision 1.6 2003/05/18 14:02:07 knoaman
* Memory manager implementation: pass per instance manager.
*
@@ -200,5 +203,89 @@
{
fAttName->setName(prefix, localPart, uriId);
}
+
+/***
+ * Support for Serialization/De-serialization
+ ***/
+
+IMPL_XSERIALIZABLE_TOCREATE(SchemaAttDef)
+
+void SchemaAttDef::serialize(XSerializeEngine& serEng)
+{
+
+ XMLAttDef::serialize(serEng);
+
+ if (serEng.isStoring())
+ {
+ serEng<<fElemId;
+ serEng<<fAttName;
+ DatatypeValidator::storeDV(serEng, fDatatypeValidator);
+ DatatypeValidator::storeDV(serEng, fAnyDatatypeValidator);
+ DatatypeValidator::storeDV(serEng,
(DatatypeValidator*)fMemberTypeValidator);
+
+ /***
+ *
+ * Serialize ValueVectorOf<unsigned int>
+ *
+ ***/
+ if (serEng.needToWriteTemplateObject(fNamespaceList))
+ {
+ unsigned int listSize = fNamespaceList->size();
+ serEng<<listSize;
+
+ for (unsigned int i=0; i < listSize; i++)
+ {
+ serEng<<fNamespaceList->elementAt(i);
+ }
+
+ }
+
+ serEng<<(int)fValidity;
+ serEng<<(int)fValidation;
+ }
+ else
+ {
+
+ serEng>>fElemId;
+ serEng>>fAttName;
+ fDatatypeValidator = DatatypeValidator::loadDV(serEng);
+ fAnyDatatypeValidator = DatatypeValidator::loadDV(serEng);
+ fMemberTypeValidator = DatatypeValidator::loadDV(serEng);
+
+ /***
+ *
+ * Deserialize ValueVectorOf<unsigned int>
+ *
+ ***/
+ if (serEng.needToReadTemplateObject((void**)&fNamespaceList))
+ {
+ if (!fNamespaceList)
+ {
+ fNamespaceList = new (getMemoryManager()) ValueVectorOf<unsigned
int>(8, getMemoryManager());
+ }
+
+ serEng.registerTemplateObject(fNamespaceList);
+
+ unsigned int listSize;
+ serEng>>listSize;
+
+ for (unsigned int i=0; i < listSize; i++)
+ {
+ unsigned int uriId;
+ serEng>>uriId;
+ fNamespaceList->addElement(uriId);
+ }
+
+ }
+
+ int i;
+ serEng>>i;
+ fValidity = (PSVIDefs::Validity)i;
+
+ serEng>>i;
+ fValidation = (PSVIDefs::Validation)i;
+ }
+}
+
XERCES_CPP_NAMESPACE_END
1.7 +8 -0 xml-xerces/c/src/xercesc/validators/schema/SchemaAttDef.hpp
Index: SchemaAttDef.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaAttDef.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SchemaAttDef.hpp 18 May 2003 14:02:07 -0000 1.6
+++ SchemaAttDef.hpp 10 Oct 2003 16:25:40 -0000 1.7
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.7 2003/10/10 16:25:40 peiyongz
+ * Implementation of Serialization/Deserialization
+ *
* Revision 1.6 2003/05/18 14:02:07 knoaman
* Memory manager implementation: pass per instance manager.
*
@@ -251,6 +254,11 @@
void resetNamespaceList();
void setValidity(PSVIDefs::Validity valid);
void setValidationAttempted(PSVIDefs::Validation validation);
+
+ /***
+ * Support for Serialization/De-serialization
+ ***/
+ DECL_XSERIALIZABLE(SchemaAttDef)
private :
// -----------------------------------------------------------------------
1.4 +90 -4 xml-xerces/c/src/xercesc/validators/schema/SchemaAttDefList.cpp
Index: SchemaAttDefList.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaAttDefList.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SchemaAttDefList.cpp 18 May 2003 14:02:07 -0000 1.3
+++ SchemaAttDefList.cpp 10 Oct 2003 16:25:40 -0000 1.4
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.4 2003/10/10 16:25:40 peiyongz
+ * Implementation of Serialization/Deserialization
+ *
* Revision 1.3 2003/05/18 14:02:07 knoaman
* Memory manager implementation: pass per instance manager.
*
@@ -84,10 +87,9 @@
// ---------------------------------------------------------------------------
// SchemaAttDefList: Constructors and Destructor
// ---------------------------------------------------------------------------
-SchemaAttDefList::SchemaAttDefList(RefHash2KeysTableOf<SchemaAttDef>* const
listToUse) :
-
- fEnum(0)
- , fList(listToUse)
+SchemaAttDefList::SchemaAttDefList(RefHash2KeysTableOf<SchemaAttDef>* const
listToUse)
+:fEnum(0)
+,fList(listToUse)
{
fEnum = new RefHash2KeysTableOfEnumerator<SchemaAttDef>(listToUse);
}
@@ -160,4 +162,88 @@
fEnum->Reset();
}
+/***
+ * Support for Serialization/De-serialization
+ ***/
+
+IMPL_XSERIALIZABLE_TOCREATE(SchemaAttDefList)
+
+void SchemaAttDefList::serialize(XSerializeEngine& serEng)
+{
+
+ XMLAttDefList::serialize(serEng);
+
+ if (serEng.isStoring())
+ {
+ /***
+ *
+ * Serialize RefHash2KeysTableOf<SchemaAttDef>
+ *
+ ***/
+ if (serEng.needToWriteTemplateObject(fList))
+ {
+ int itemNumber = 0;
+ fEnum->Reset();
+
+ while (fEnum->hasMoreElements())
+ {
+ fEnum->nextElement();
+ itemNumber++;
+ }
+
+ serEng<<itemNumber;
+
+ fEnum->Reset();
+ while (fEnum->hasMoreElements())
+ {
+ SchemaAttDef& curAttDef = fEnum->nextElement();
+ curAttDef.serialize(serEng);
+ }
+
+ }
+
+ // do not serialize fEnum
+ }
+ else
+ {
+ /***
+ *
+ * Deserialize RefHash2KeysTableOf<SchemaAttDef>
+ *
+ ***/
+ if (serEng.needToReadTemplateObject((void**)&fList))
+ {
+ if (!fList)
+ {
+ fList = new RefHash2KeysTableOf<SchemaAttDef>(3);
+ }
+
+ serEng.registerTemplateObject(fList);
+
+ int itemNumber = 0;
+ serEng>>itemNumber;
+
+ for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
+ {
+ SchemaAttDef* data = new SchemaAttDef();
+ data->serialize(serEng);
+ fList->put(data->getAttName()->getLocalPart(), data->getId(),
data);
+ }
+ }
+
+ if (!fEnum)
+ {
+ fEnum = new RefHash2KeysTableOfEnumerator<SchemaAttDef>(fList);
+ }
+ }
+
+}
+
+SchemaAttDefList::SchemaAttDefList(MemoryManager* const manager)
+:fEnum(0)
+,fList(0)
+{
+}
+
XERCES_CPP_NAMESPACE_END
+
1.4 +9 -0 xml-xerces/c/src/xercesc/validators/schema/SchemaAttDefList.hpp
Index: SchemaAttDefList.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaAttDefList.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SchemaAttDefList.hpp 6 Dec 2002 13:27:14 -0000 1.3
+++ SchemaAttDefList.hpp 10 Oct 2003 16:25:40 -0000 1.4
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.4 2003/10/10 16:25:40 peiyongz
+ * Implementation of Serialization/Deserialization
+ *
* Revision 1.3 2002/12/06 13:27:14 tng
* [Bug 9083] Make some classes be exportable.
*
@@ -137,6 +140,12 @@
virtual XMLAttDef& nextElement();
virtual void Reset();
+ /***
+ * Support for Serialization/De-serialization
+ ***/
+ DECL_XSERIALIZABLE(SchemaAttDefList)
+
+ SchemaAttDefList(MemoryManager* const manager =
XMLPlatformUtils::fgMemoryManager);
private :
// -----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]