peiyongz 2003/10/14 08:24:23 Modified: c/src/xercesc/validators/schema/identity IC_Field.cpp IC_Field.hpp IC_Key.cpp IC_Key.hpp IC_KeyRef.cpp IC_KeyRef.hpp IC_Selector.cpp IC_Selector.hpp IC_Unique.cpp IC_Unique.hpp IdentityConstraint.cpp IdentityConstraint.hpp XercesXPath.cpp XercesXPath.hpp Log: Implementation of Serialization/Deserialization Revision Changes Path 1.5 +37 -0 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Field.cpp Index: IC_Field.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Field.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- IC_Field.cpp 15 May 2003 18:59:34 -0000 1.4 +++ IC_Field.cpp 14 Oct 2003 15:24:23 -0000 1.5 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.5 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.4 2003/05/15 18:59:34 knoaman * Partial implementation of the configurable memory manager. * @@ -83,6 +86,8 @@ #include <xercesc/validators/schema/identity/ValueStore.hpp> #include <xercesc/validators/schema/identity/XercesXPath.hpp> +#include <xercesc/validators/schema/identity/IdentityConstraint.hpp> + XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- @@ -153,6 +158,38 @@ MemoryManager* const manager) { return new (manager) FieldMatcher(fXPath, this, valueStore, manager); +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(IC_Field) + +void IC_Field::serialize(XSerializeEngine& serEng) +{ + + if (serEng.isStoring()) + { + serEng<<fMayMatch; + serEng<<fXPath; + + IdentityConstraint::storeIC(serEng, fIdentityConstraint); + } + else + { + serEng>>fMayMatch; + serEng>>fXPath; + + fIdentityConstraint = IdentityConstraint::loadIC(serEng); + } + +} + +IC_Field::IC_Field(MemoryManager* const ) +:fXPath(0) +,fIdentityConstraint(0) +{ } XERCES_CPP_NAMESPACE_END 1.5 +11 -2 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Field.hpp Index: IC_Field.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Field.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- IC_Field.hpp 22 May 2003 02:10:52 -0000 1.4 +++ IC_Field.hpp 14 Oct 2003 15:24:23 -0000 1.5 @@ -67,6 +67,8 @@ // --------------------------------------------------------------------------- #include <xercesc/validators/schema/identity/XPathMatcher.hpp> +#include <xercesc/internal/XSerializable.hpp> + XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- @@ -75,7 +77,7 @@ class ValueStore; -class VALIDATORS_EXPORT IC_Field : public XMemory +class VALIDATORS_EXPORT IC_Field : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- @@ -108,6 +110,13 @@ // ----------------------------------------------------------------------- XPathMatcher* createMatcher(ValueStore* const valueStore, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Field) + + IC_Field(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- 1.4 +22 -1 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Key.cpp Index: IC_Key.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Key.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- IC_Key.cpp 15 May 2003 18:59:34 -0000 1.3 +++ IC_Key.cpp 14 Oct 2003 15:24:23 -0000 1.4 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.3 2003/05/15 18:59:34 knoaman * Partial implementation of the configurable memory manager. * @@ -83,12 +86,30 @@ IC_Key::IC_Key(const XMLCh* const identityConstraintName, const XMLCh* const elemName, MemoryManager* const manager) - : IdentityConstraint(identityConstraintName, elemName, manager) +:IdentityConstraint(identityConstraintName, elemName, manager) { } IC_Key::~IC_Key() +{ +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(IC_Key) + +void IC_Key::serialize(XSerializeEngine& serEng) +{ + IdentityConstraint::serialize(serEng); + + //no data +} + +IC_Key::IC_Key(MemoryManager* const manager) +:IdentityConstraint(0, 0, manager) { } 1.5 +8 -1 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Key.hpp Index: IC_Key.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Key.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- IC_Key.hpp 16 May 2003 21:43:22 -0000 1.4 +++ IC_Key.hpp 14 Oct 2003 15:24:23 -0000 1.5 @@ -85,6 +85,13 @@ // ----------------------------------------------------------------------- short getType() const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Key) + + IC_Key(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: // ----------------------------------------------------------------------- // Unimplemented contstructors and operators 1.4 +30 -0 xml-xerces/c/src/xercesc/validators/schema/identity/IC_KeyRef.cpp Index: IC_KeyRef.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_KeyRef.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- IC_KeyRef.cpp 15 May 2003 18:59:34 -0000 1.3 +++ IC_KeyRef.cpp 14 Oct 2003 15:24:23 -0000 1.4 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.3 2003/05/15 18:59:34 knoaman * Partial implementation of the configurable memory manager. * @@ -91,6 +94,33 @@ IC_KeyRef::~IC_KeyRef() +{ +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(IC_KeyRef) + +void IC_KeyRef::serialize(XSerializeEngine& serEng) +{ + IdentityConstraint::serialize(serEng); + + if (serEng.isStoring()) + { + IdentityConstraint::storeIC(serEng, fKey); + } + else + { + fKey = IdentityConstraint::loadIC(serEng); + } + +} + +IC_KeyRef::IC_KeyRef(MemoryManager* const manager) +:IdentityConstraint(0, 0, manager) +,fKey(0) { } 1.5 +8 -1 xml-xerces/c/src/xercesc/validators/schema/identity/IC_KeyRef.hpp Index: IC_KeyRef.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_KeyRef.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- IC_KeyRef.hpp 16 May 2003 21:43:22 -0000 1.4 +++ IC_KeyRef.hpp 14 Oct 2003 15:24:23 -0000 1.5 @@ -87,6 +87,13 @@ short getType() const; IdentityConstraint* getKey() const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_KeyRef) + + IC_KeyRef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: // ----------------------------------------------------------------------- // Unimplemented contstructors and operators 1.6 +32 -0 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Selector.cpp Index: IC_Selector.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Selector.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- IC_Selector.cpp 15 May 2003 18:59:34 -0000 1.5 +++ IC_Selector.cpp 14 Oct 2003 15:24:23 -0000 1.6 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.5 2003/05/15 18:59:34 knoaman * Partial implementation of the configurable memory manager. * @@ -197,6 +200,35 @@ MemoryManager* const manager) { return new (manager) SelectorMatcher(fXPath, this, fieldActivator, initialDepth, manager); +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(IC_Selector) + +void IC_Selector::serialize(XSerializeEngine& serEng) +{ + if (serEng.isStoring()) + { + serEng<<fXPath; + + IdentityConstraint::storeIC(serEng, fIdentityConstraint); + } + else + { + serEng>>fXPath; + + fIdentityConstraint = IdentityConstraint::loadIC(serEng); + } + +} + +IC_Selector::IC_Selector(MemoryManager* const ) +:fXPath(0) +,fIdentityConstraint(0) +{ } XERCES_CPP_NAMESPACE_END 1.8 +11 -2 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Selector.hpp Index: IC_Selector.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Selector.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- IC_Selector.hpp 3 Jun 2003 18:12:29 -0000 1.7 +++ IC_Selector.hpp 14 Oct 2003 15:24:23 -0000 1.8 @@ -67,6 +67,8 @@ // --------------------------------------------------------------------------- #include <xercesc/validators/schema/identity/XPathMatcher.hpp> +#include <xercesc/internal/XSerializable.hpp> + XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- @@ -75,7 +77,7 @@ class FieldActivator; -class VALIDATORS_EXPORT IC_Selector : public XMemory +class VALIDATORS_EXPORT IC_Selector : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- @@ -103,6 +105,13 @@ XPathMatcher* createMatcher(FieldActivator* const fieldActivator, const int initialDepth, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Selector) + + IC_Selector(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- 1.4 +21 -0 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Unique.cpp Index: IC_Unique.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Unique.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- IC_Unique.cpp 15 May 2003 18:59:34 -0000 1.3 +++ IC_Unique.cpp 14 Oct 2003 15:24:23 -0000 1.4 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.3 2003/05/15 18:59:34 knoaman * Partial implementation of the configurable memory manager. * @@ -89,6 +92,24 @@ IC_Unique::~IC_Unique() +{ +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(IC_Unique) + +void IC_Unique::serialize(XSerializeEngine& serEng) +{ + IdentityConstraint::serialize(serEng); + + //no data +} + +IC_Unique::IC_Unique(MemoryManager* const manager) +:IdentityConstraint(0, 0, manager) { } 1.5 +8 -1 xml-xerces/c/src/xercesc/validators/schema/identity/IC_Unique.hpp Index: IC_Unique.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IC_Unique.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- IC_Unique.hpp 16 May 2003 21:43:22 -0000 1.4 +++ IC_Unique.hpp 14 Oct 2003 15:24:23 -0000 1.5 @@ -89,6 +89,13 @@ // ----------------------------------------------------------------------- short getType() const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Unique) + + IC_Unique(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: // ----------------------------------------------------------------------- // Unimplemented contstructors and operators 1.6 +127 -0 xml-xerces/c/src/xercesc/validators/schema/identity/IdentityConstraint.cpp Index: IdentityConstraint.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IdentityConstraint.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- IdentityConstraint.cpp 1 Oct 2003 16:32:42 -0000 1.5 +++ IdentityConstraint.cpp 14 Oct 2003 15:24:23 -0000 1.6 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.5 2003/10/01 16:32:42 neilg * improve handling of out of memory conditions, bug #23415. Thanks to David Cargill. * @@ -88,6 +91,13 @@ #include <xercesc/util/XMLString.hpp> #include <xercesc/util/OutOfMemoryException.hpp> +//since we need to dynamically created each and every derivatives +//during deserialization by XSerializeEngine>>Derivative, we got +//to include all hpp +#include <xercesc/validators/schema/identity/IC_Unique.hpp> +#include <xercesc/validators/schema/identity/IC_Key.hpp> +#include <xercesc/validators/schema/identity/IC_KeyRef.hpp> + XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- @@ -177,6 +187,123 @@ fMemoryManager->deallocate(fElemName);//delete [] fElemName; delete fFields; delete fSelector; +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_NOCREATE(IdentityConstraint) + +void IdentityConstraint::serialize(XSerializeEngine& serEng) +{ + + if (serEng.isStoring()) + { + serEng.writeString(fIdentityConstraintName); + serEng.writeString(fElemName); + + serEng<<fSelector; + + /*** + * + * Serialize RefVectorOf<IC_Field>* fFields; + * + ***/ + if (serEng.needToWriteTemplateObject(fFields)) + { + int vectorLength = fFields->size(); + serEng<<vectorLength; + + for ( int i = 0 ; i < vectorLength; i++) + { + serEng<<fFields->elementAt(i); + } + } + + } + else + { + + serEng.readString(fIdentityConstraintName); + serEng.readString(fElemName); + + serEng>>fSelector; + + /*** + * + * Deserialize RefVectorOf<IC_Field>* fFields; + * + ***/ + if (serEng.needToReadTemplateObject((void**)&fFields)) + { + if (!fFields) + { + fFields = new (fMemoryManager) RefVectorOf<IC_Field>(8, true, fMemoryManager); + } + + serEng.registerTemplateObject(fFields); + + int vectorLength = 0; + serEng>>vectorLength; + for ( int i = 0 ; i < vectorLength; i++) + { + IC_Field* data; + serEng>>data; + fFields->addElement(data); + } + } + + } + +} + +void IdentityConstraint::storeIC(XSerializeEngine& serEng + , IdentityConstraint* const ic) +{ + if (ic) + { + serEng<<(int) ic->getType(); + serEng<<ic; + } + else + { + serEng<<(int) UNKNOWN; + } + +} + +IdentityConstraint* IdentityConstraint::loadIC(XSerializeEngine& serEng) +{ + + int type; + serEng>>type; + + switch((ICType)type) + { + case UNIQUE: + IC_Unique* ic_unique; + serEng>>ic_unique; + return ic_unique; + break; + case KEY: + IC_Key* ic_key; + serEng>>ic_key; + return ic_key; + break; + case KEYREF: + IC_KeyRef* ic_keyref; + serEng>>ic_keyref; + return ic_keyref; + break; + case UNKNOWN: + return 0; + break; + default: //we treat this same as UnKnown + return 0; + break; + } + } XERCES_CPP_NAMESPACE_END 1.6 +17 -4 xml-xerces/c/src/xercesc/validators/schema/identity/IdentityConstraint.hpp Index: IdentityConstraint.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/IdentityConstraint.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- IdentityConstraint.hpp 18 May 2003 14:02:09 -0000 1.5 +++ IdentityConstraint.hpp 14 Oct 2003 15:24:23 -0000 1.6 @@ -72,6 +72,8 @@ #include <xercesc/util/RefVectorOf.hpp> #include <xercesc/validators/schema/identity/IC_Field.hpp> +#include <xercesc/internal/XSerializable.hpp> + XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- @@ -79,16 +81,17 @@ // --------------------------------------------------------------------------- class IC_Selector; -class VALIDATORS_EXPORT IdentityConstraint : public XMemory +class VALIDATORS_EXPORT IdentityConstraint : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- - enum { + enum ICType { UNIQUE = 0, KEY = 1, - KEYREF = 2 + KEYREF = 2, + UNKNOWN }; // ----------------------------------------------------------------------- @@ -122,6 +125,16 @@ void addField(IC_Field* const field); const IC_Field* getFieldAt(const unsigned int index) const; IC_Field* getFieldAt(const unsigned int index); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IdentityConstraint) + + static void storeIC(XSerializeEngine& serEng + , IdentityConstraint* const ic); + + static IdentityConstraint* loadIC(XSerializeEngine& serEng); protected: // ----------------------------------------------------------------------- 1.10 +187 -0 xml-xerces/c/src/xercesc/validators/schema/identity/XercesXPath.cpp Index: XercesXPath.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/XercesXPath.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XercesXPath.cpp 1 Oct 2003 16:32:42 -0000 1.9 +++ XercesXPath.cpp 14 Oct 2003 15:24:23 -0000 1.10 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.10 2003/10/14 15:24:23 peiyongz + * Implementation of Serialization/Deserialization + * * Revision 1.9 2003/10/01 16:32:42 neilg * improve handling of out of memory conditions, bug #23415. Thanks to David Cargill. * @@ -159,6 +162,33 @@ { } +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XercesNodeTest) + +void XercesNodeTest::serialize(XSerializeEngine& serEng) +{ + + if (serEng.isStoring()) + { + serEng<<fType; + serEng<<fName; + } + else + { + serEng>>fType; + serEng>>fName; + } +} + +XercesNodeTest::XercesNodeTest(MemoryManager* const manager) +:fType(UNKNOWN) +,fName(0) +{ +} + // --------------------------------------------------------------------------- // XercesNodeTest: Operators // --------------------------------------------------------------------------- @@ -240,6 +270,32 @@ return !operator==(other); } +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XercesStep) + +void XercesStep::serialize(XSerializeEngine& serEng) +{ + if (serEng.isStoring()) + { + serEng<<fAxisType; + serEng<<fNodeTest; + } + else + { + serEng>>fAxisType; + serEng>>fNodeTest; + } +} + +XercesStep::XercesStep(MemoryManager* const manager) +:fAxisType(UNKNOWN) +,fNodeTest(0) +{ +} + // --------------------------------------------------------------------------- // XercesLocationPath: Constructors and Destructor // --------------------------------------------------------------------------- @@ -271,6 +327,66 @@ return !operator==(other); } +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XercesLocationPath) + +void XercesLocationPath::serialize(XSerializeEngine& serEng) +{ + if (serEng.isStoring()) + { + /*** + * + * Serialize RefVectorOf<XercesStep>* fSteps; + * + ***/ + if (serEng.needToWriteTemplateObject(fSteps)) + { + int vectorLength = fSteps->size(); + serEng<<vectorLength; + + for ( int i = 0 ; i < vectorLength; i++) + { + serEng<<fSteps->elementAt(i); + } + } + + } + else + { + /*** + * + * Deserialize RefVectorOf<XercesStep>* fSteps; + * + ***/ + if (serEng.needToReadTemplateObject((void**)&fSteps)) + { + if (!fSteps) + { + fSteps = new (serEng.getMemoryManager()) RefVectorOf<XercesStep>(8, true, serEng.getMemoryManager()); + } + + serEng.registerTemplateObject(fSteps); + + int vectorLength = 0; + serEng>>vectorLength; + for ( int i = 0 ; i < vectorLength; i++) + { + XercesStep* data; + serEng>>data; + fSteps->addElement(data); + } + } + } +} + +XercesLocationPath::XercesLocationPath(MemoryManager* const manager) +:fSteps(0) +{ +} + // --------------------------------------------------------------------------- // XercesPath: Constructors and Destructor // --------------------------------------------------------------------------- @@ -624,6 +740,77 @@ fLocationPaths->addElement(new (fMemoryManager) XercesLocationPath(stepsVector)); janSteps.orphan(); +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XercesXPath) + +void XercesXPath::serialize(XSerializeEngine& serEng) +{ + + if (serEng.isStoring()) + { + serEng<<fEmptyNamespaceId; + serEng.writeString(fExpression); + + /*** + * + * Serialize RefVectorOf<XercesLocationPath>* fLocationPaths; + * + ***/ + if (serEng.needToWriteTemplateObject(fLocationPaths)) + { + int vectorLength = fLocationPaths->size(); + serEng<<vectorLength; + + for ( int i = 0 ; i < vectorLength; i++) + { + serEng<<fLocationPaths->elementAt(i); + } + } + + } + else + { + serEng>>fEmptyNamespaceId; + serEng.readString(fExpression); + + /*** + * + * Deserialize RefVectorOf<XercesLocationPath>* fLocationPaths; + * + ***/ + if (serEng.needToReadTemplateObject((void**)&fLocationPaths)) + { + if (!fLocationPaths) + { + fLocationPaths = new (fMemoryManager) RefVectorOf<XercesLocationPath>(8, true, fMemoryManager); + } + + serEng.registerTemplateObject(fLocationPaths); + + int vectorLength = 0; + serEng>>vectorLength; + for ( int i = 0 ; i < vectorLength; i++) + { + XercesLocationPath* data; + serEng>>data; + fLocationPaths->addElement(data); + } + } + + } +} + +XercesXPath::XercesXPath(MemoryManager* const manager) +:fEmptyNamespaceId(0) +,fExpression(0) +,fLocationPaths(0) +,fMemoryManager(manager) +{ } // --------------------------------------------------------------------------- 1.7 +39 -7 xml-xerces/c/src/xercesc/validators/schema/identity/XercesXPath.hpp Index: XercesXPath.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/identity/XercesXPath.hpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- XercesXPath.hpp 22 May 2003 02:10:52 -0000 1.6 +++ XercesXPath.hpp 14 Oct 2003 15:24:23 -0000 1.7 @@ -69,6 +69,8 @@ #include <xercesc/util/RefVectorOf.hpp> #include <xercesc/util/ValueVectorOf.hpp> +#include <xercesc/internal/XSerializable.hpp> + XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- @@ -78,7 +80,7 @@ class NamespaceScope; -class VALIDATORS_EXPORT XercesNodeTest : public XMemory +class VALIDATORS_EXPORT XercesNodeTest : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- @@ -88,7 +90,8 @@ QNAME = 1, WILDCARD = 2, NODE = 3, - NAMESPACE= 4 + NAMESPACE= 4, + UNKNOWN }; // ----------------------------------------------------------------------- @@ -115,6 +118,13 @@ short getType() const { return fType; } QName* getName() const { return fName; } + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesNodeTest) + + XercesNodeTest(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: // ----------------------------------------------------------------------- // Data members @@ -127,7 +137,7 @@ /** * A location path step comprised of an axis and node test. */ -class VALIDATORS_EXPORT XercesStep : public XMemory +class VALIDATORS_EXPORT XercesStep : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- @@ -137,7 +147,8 @@ CHILD = 1, ATTRIBUTE = 2, SELF = 3, - DESCENDANT = 4 + DESCENDANT = 4, + UNKNOWN }; // ----------------------------------------------------------------------- @@ -160,6 +171,13 @@ unsigned short getAxisType() const { return fAxisType; } XercesNodeTest* getNodeTest() const { return fNodeTest; } + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesStep) + + XercesStep(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: // ----------------------------------------------------------------------- // Data members @@ -172,7 +190,7 @@ /** * A location path representation for an XPath expression. */ -class VALIDATORS_EXPORT XercesLocationPath : public XMemory +class VALIDATORS_EXPORT XercesLocationPath : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- @@ -194,6 +212,13 @@ void addStep(XercesStep* const aStep); XercesStep* getStep(const unsigned int index) const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesLocationPath) + + XercesLocationPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: // ----------------------------------------------------------------------- // Unimplemented contstructors and operators @@ -208,7 +233,7 @@ }; -class VALIDATORS_EXPORT XercesXPath : public XMemory +class VALIDATORS_EXPORT XercesXPath : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- @@ -292,6 +317,13 @@ // Constructors/Destructor // ----------------------------------------------------------------------- RefVectorOf<XercesLocationPath>* getLocationPaths() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesXPath) + + XercesXPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // -----------------------------------------------------------------------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]