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]