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]

Reply via email to