secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSerializeEngine.hpp
changeset 5 3eebb1e54d3a
parent 3 127731b7107d
child 6 aba6b8104af3
--- a/secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSerializeEngine.hpp	Fri Jan 22 09:56:12 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,873 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * $Id: XSerializeEngine.hpp 568078 2007-08-21 11:43:25Z amassari $
- */
-
-#if !defined(XSERIALIZE_ENGINE_HPP)
-#define XSERIALIZE_ENGINE_HPP
-
-#include <xercesc/util/RefHashTableOf.hpp>
-#include <xercesc/util/ValueVectorOf.hpp>
-#include <xercesc/util/XMLExceptMsgs.hpp>
-
-#include <xercesc/internal/XSerializationException.hpp>
-
-XERCES_CPP_NAMESPACE_BEGIN
-
-class XSerializable;
-class XProtoType;
-class MemoryManager;
-class XSerializedObjectId;
-class BinOutputStream;
-class BinInputStream;
-class XMLGrammarPool;
-class XMLGrammarPoolImpl;
-class XMLStringPool;
-
-class XMLUTIL_EXPORT XSerializeEngine
-{
-public:
-
-    enum { mode_Store
-         , mode_Load 
-    };
-    
-
-    static const bool toReadBufferLen;
-
-    typedef unsigned int   XSerializedObjectId_t;
-
-    /***
-      *
-      *  Destructor 
-      *
-      ***/
-    ~XSerializeEngine();
-
-    /***
-      *
-      *  Constructor for de-serialization(loading)
-      *
-      *  Application needs to make sure that the instance of
-      *  BinInputStream, persists beyond the life of this
-      *  SerializeEngine.
-      *
-      *  Param
-      *     inStream         input stream
-      *     gramPool         Grammar Pool
-      *     bufSize          the size of the internal buffer
-      *
-      ***/
-    XSerializeEngine(BinInputStream*         inStream
-                   , XMLGrammarPool* const   gramPool
-                   , unsigned long           bufSize = 8192 );
-
-
-    /***
-      *
-      *  Constructor for serialization(storing)
-      *
-      *  Application needs to make sure that the instance of
-      *  BinOutputStream, persists beyond the life of this
-      *  SerializeEngine.
-      *
-      *  Param
-      *     outStream        output stream
-      *     gramPool         Grammar Pool
-      *     bufSize          the size of the internal buffer
-      *
-      ***/
-    XSerializeEngine(BinOutputStream*        outStream
-                   , XMLGrammarPool* const   gramPool
-                   , unsigned long           bufSize = 8192 );
-
-
-    /***
-      *
-      *  Deprecated
-      *
-      *  Constructor for de-serialization(loading)
-      *
-      *  Application needs to make sure that the instance of
-      *  BinInputStream, persists beyond the life of this
-      *  SerializeEngine.
-      *
-      *  Param
-      *     inStream         input stream
-      *     manager          MemoryManager
-      *     bufSize          the size of the internal buffer
-      *
-      ***/
-    XSerializeEngine(BinInputStream*         inStream
-                   , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
-                   , unsigned long           bufSize = 8192 );
-
-    
-    /***
-      *
-      *  Deprecated
-      *
-      *  Constructor for serialization(storing)
-      *
-      *  Application needs to make sure that the instance of
-      *  BinOutputStream, persists beyond the life of this
-      *  SerializeEngine.
-      *
-      *  Param
-      *     outStream        output stream
-      *     manager          MemoryManager
-      *     bufSize          the size of the internal buffer
-      *
-      ***/
-    XSerializeEngine(BinOutputStream*        outStream
-                   , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
-                   , unsigned long           bufSize = 8192 );
-
-    /***
-      *
-      *  When serialization, flush out the internal buffer
-      *
-      *  Return: 
-      *
-      ***/
-    void flush();
-
-    /***
-      *
-      *  Checking if the serialize engine is doing serialization(storing)
-      *
-      *  Return: true, if it is 
-      *          false, otherwise
-      *
-      ***/
-    inline bool isStoring() const;
-
-    /***
-      *
-      *  Checking if the serialize engine is doing de-serialization(loading)
-      *
-      *  Return: true, if it is 
-      *          false, otherwise
-      *
-      ***/
-    inline bool isLoading() const;
-
-    /***
-      *
-      *  Get the GrammarPool
-      *
-      *  Return: XMLGrammarPool
-      *
-      ***/
-    XMLGrammarPool* getGrammarPool() const;
-
-    /***
-      *
-      *  Get the StringPool
-      *
-      *  Return: XMLStringPool
-      *
-      ***/
-    XMLStringPool* getStringPool() const;
-
-    /***
-      *
-      *  Get the embeded Memory Manager
-      *
-      *  Return: MemoryManager
-      *
-      ***/
-    MemoryManager* getMemoryManager() const;
-
-    /***
-      *
-      *  Get the storer level (the level of the serialize engine
-      *  which created the binary stream that this serialize engine
-      *  is loading).
-      *
-      *  The level returned is meaningful only when
-      *  the engine isLoading.
-      *
-      *  Return: level
-      *
-      ***/
-    inline unsigned short getStorerLevel() const;
-
-    /***
-      *
-      *  Write object to the internal buffer.
-      *
-      *  Param
-      *     objectToWrite:    the object to be serialized
-      *
-      *  Return:
-      *
-      ***/
-           void           write(XSerializable* const objectToWrite);
-
-    /***
-      *
-      *  Write prototype info to the internal buffer.
-      *
-      *  Param
-      *     protoType:    instance of prototype
-      *
-      *  Return:
-      *
-      ***/
-           void           write(XProtoType* const protoType);
-
-    /***
-      *
-      *  Write a stream of XMLByte to the internal buffer.
-      *
-      *  Param
-      *     toWrite:   the stream of XMLByte to write
-      *     writeLen:  the length of the stream
-      *
-      *  Return:
-      *
-      ***/
-           void           write(const XMLByte* const toWrite
-                               ,      int            writeLen);
-
-    /***
-      *
-      *  Write a stream of XMLCh to the internal buffer.
-      *
-      *  Param
-      *     toWrite:   the stream of XMLCh to write
-      *     writeLen:  the length of the stream
-      *
-      *  Return:
-      *
-      ***/
-           void           write(const XMLCh* const toWrite
-                               ,      int          writeLen);
-
-    /***
-      *
-      *  Write a stream of XMLCh to the internal buffer.
-      *
-      *  Write the bufferLen first if requested, then the length
-      *  of the stream followed by the stream.
-      *
-      *  Param
-      *     toWrite:        the stream of XMLCh to write
-      *     bufferLen:      the maximum size of the buffer
-      *     toWriteBufLen:  specify if the bufferLen need to be written or not
-      *
-      *  Return:
-      *
-      ***/
-           void           writeString(const XMLCh* const toWrite
-                                    , const int          bufferLen = 0
-                                    , bool               toWriteBufLen = false);
-
-    /***
-      *
-      *  Write a stream of XMLByte to the internal buffer.
-      *
-      *  Write the bufferLen first if requested, then the length
-      *  of the stream followed by the stream.
-      *
-      *  Param
-      *     toWrite:        the stream of XMLByte to write
-      *     bufferLen:      the maximum size of the buffer
-      *     toWriteBufLen:  specify if the bufferLen need to be written or not
-      *
-      *  Return:
-      *
-      ***/
-           void           writeString(const XMLByte* const toWrite
-                                    , const int            bufferLen = 0
-                                    , bool                 toWriteBufLen = false);
-
-    static const bool toWriteBufferLen;
-
-    /***
-      *
-      *  Read/Create object from the internal buffer.
-      *
-      *  Param
-      *     protoType:    an instance of prototype of the object anticipated
-      *
-      *  Return:          to object read/created
-      *
-      ***/
-	       XSerializable* read(XProtoType* const protoType);
-
-    /***
-      *
-      *  Read prototype object from the internal buffer.
-      *  Verify if the same prototype object found in buffer.
-      *
-      *  Param
-      *     protoType:    an instance of prototype of the object anticipated
-      *     objTag:       the object Tag to an existing object
-      *
-      *  Return:          true  : if matching found
-      *                   false : otherwise
-      *
-      ***/
-           bool           read(XProtoType* const    protoType
-		                     , XSerializedObjectId_t*       objTag);
-
-    /***
-      *
-      *  Read XMLByte stream from the internal buffer.
-      *
-      *  Param
-      *     toRead:   the buffer to hold the XMLByte stream
-      *     readLen:  the length of the XMLByte to read in
-      *
-      *  Return:
-      *
-      ***/
-           void           read(XMLByte* const toRead
-                             , int            readLen);
-
-    /***
-      *
-      *  Read XMLCh stream from the internal buffer.
-      *
-      *  Param
-      *     toRead:   the buffer to hold the XMLCh stream
-      *     readLen:  the length of the XMLCh to read in
-      *
-      *  Return:
-      *
-      ***/
-           void           read(XMLCh* const toRead
-                             , int          readLen);
-
-    /***
-      *
-      *  Read a stream of XMLCh from the internal buffer.
-      *
-      *  Read the bufferLen first if requested, then the length
-      *  of the stream followed by the stream.
-      *
-      *  Param
-      *     toRead:       the pointer to the buffer to hold the XMLCh stream
-      *     bufferLen:    the size of the buffer created
-      *     dataLen:       the length of the stream
-      *     toReadBufLen: specify if the bufferLen need to be read or not
-      *
-      *  Return:
-      *
-      ***/
-           void           readString(XMLCh*&        toRead
-                                   , int&           bufferLen
-                                   , int&           dataLen
-                                   , bool           toReadBufLen = false);
-
-     /***
-       *
-       *  Read a stream of XMLCh from the internal buffer.
-       *
-       *  Read the bufferLen first if requested, then the length
-       *  of the stream followed by the stream.
-       *
-       *  Param
-       *     toRead:       the pointer to the buffer to hold the XMLCh stream
-       *     bufferLen:    the size of the buffer created
-       *
-       *  Return:
-       *
-       ***/
-            inline void     readString(XMLCh*&        toRead
-                                    , int&            bufferLen);
- 
-     /***
-       *
-       *  Read a stream of XMLCh from the internal buffer.
-       *
-       *  Param
-       *     toRead:       the pointer to the buffer to hold the XMLCh stream
-       *
-       *  Return:
-       *
-       ***/
-            inline void      readString(XMLCh*&        toRead);
-
-    /***
-      *
-      *  Read a stream of XMLByte from the internal buffer.
-      *
-      *  Read the bufferLen first if requested, then the length
-      *  of the stream followed by the stream.
-      *
-      *  Param
-      *     toRead:       the pointer to the buffer to hold the XMLByte stream
-      *     bufferLen:    the size of the buffer created
-      *     dataLen:       the length of the stream
-      *     toReadBufLen: specify if the bufferLen need to be read or not
-      *
-      *  Return:
-      *
-      ***/
-           void           readString(XMLByte*&      toRead
-                                   , int&           bufferLen
-                                   , int&           dataLen
-                                   , bool           toReadBufLen = false);
-
-
-     /***
-       *
-       *  Read a stream of XMLByte from the internal buffer.
-       *
-       *  Read the bufferLen first if requested, then the length
-       *  of the stream followed by the stream.
-       *
-       *  Param
-       *     toRead:       the pointer to the buffer to hold the XMLByte stream
-       *     bufferLen:    the size of the buffer created
-       *
-       *  Return:
-       *
-       ***/
-            inline void       readString(XMLByte*&      toRead
-                                       , int&           bufferLen);
- 
-     /***
-       *
-       *  Read a stream of XMLByte from the internal buffer.
-       *
-       *  Read the bufferLen first if requested, then the length
-       *  of the stream followed by the stream.
-       *
-       *  Param
-       *     toRead:       the pointer to the buffer to hold the XMLByte stream
-       *     bufferLen:    the size of the buffer created
-       *     dataLen:       the length of the stream
-       *     toReadBufLen: specify if the bufferLen need to be read or not
-       *
-       *  Return:
-       *
-       ***/
-            inline void       readString(XMLByte*&      toRead);
-
-    /***
-      *
-      *  Check if the template object has been stored or not
-      *
-      *  Param
-      *    objectPtr:     the template object pointer
-      *
-      *  Return:          true  : the object has NOT been stored yet
-      *                   false : otherwise
-      *
-      ***/
-           bool           needToStoreObject(void* const templateObjectToWrite);
-
-    /***
-      *
-      *  Check if the template object has been loaded or not
-      *
-      *  Param
-      *    objectPtr:     the address of the template object pointer
-      *
-      *  Return:          true  : the object has NOT been loaded yet
-      *                   false : otherwise
-      *
-      ***/
-           bool           needToLoadObject(void**       templateObjectToRead);
-
-    /***
-      *
-      *  In the case of needToLoadObject() return true, the client
-      *  application needs to instantiate an expected template object, and
-      *  register the address to the engine.
-      *
-      *  Param
-      *    objectPtr:     the template object pointer newly instantiated
-      *
-      *  Return:  
-      *
-      ***/
-           void           registerObject(void* const templateObjectToRegister);
-
-    /***
-      *
-      *  Insertion operator for serializable classes
-      *
-      ***/
-
-	friend XSerializeEngine& operator<<(XSerializeEngine&
-                                      , XSerializable* const );
-
-    /***
-      *
-      *  Insertion operators for 
-      *     . basic Xerces data types
-      *     . built-in types 
-      *
-      ***/
-           XSerializeEngine& operator<<(XMLByte);
-           XSerializeEngine& operator<<(XMLCh);
-
-           XSerializeEngine& operator<<(char);
-           XSerializeEngine& operator<<(short);
-           XSerializeEngine& operator<<(int);
-           XSerializeEngine& operator<<(unsigned int);
-           XSerializeEngine& operator<<(long);
-           XSerializeEngine& operator<<(unsigned long);
-           XSerializeEngine& operator<<(float);
-           XSerializeEngine& operator<<(double);
-           XSerializeEngine& operator<<(bool);
-
-    /***
-      *
-      *  Extraction operators for 
-      *     . basic Xerces data types
-      *     . built-in types 
-      *
-      ***/
-           XSerializeEngine& operator>>(XMLByte&);
-           XSerializeEngine& operator>>(XMLCh&);
-
-           XSerializeEngine& operator>>(char&);
-           XSerializeEngine& operator>>(short&);
-           XSerializeEngine& operator>>(int&);
-           XSerializeEngine& operator>>(unsigned int&);
-           XSerializeEngine& operator>>(long&);
-           XSerializeEngine& operator>>(unsigned long&);
-           XSerializeEngine& operator>>(float&);
-           XSerializeEngine& operator>>(double&);
-           XSerializeEngine& operator>>(bool&);
-
-    /***
-      *
-      *  Getters
-      *
-      ***/
-    inline 
-    XMLSize_t   getBufSize()    const;
-
-    inline 
-    XMLSize_t   getBufCur()     const;
-
-    inline 
-    XMLSize_t   getBufCurAccumulated()     const;
-
-    inline 
-    XMLSize_t   getBufCount()    const;
-
-    void                  trace(char*)     const;
-
-private:
-    // -----------------------------------------------------------------------
-    //  Unimplemented constructors and operators
-    // -----------------------------------------------------------------------
-	XSerializeEngine();
-    XSerializeEngine(const XSerializeEngine&);
-	XSerializeEngine& operator=(const XSerializeEngine&);
-
-    /***
-      *
-      *   Store Pool Opertions
-      *
-      ***/
-           XSerializedObjectId_t  lookupStorePool(void* const objectPtr) const;
-           void                   addStorePool(void* const objectPtr);
-
-    /***
-      *
-      *   Load Pool Opertions
-      *
-      ***/
-           XSerializable* lookupLoadPool(XSerializedObjectId_t objectTag) const;
-           void           addLoadPool(void* const objectPtr);
-   
-    /***
-      *   
-      *    Intenal Buffer Operations
-      *
-      ***/
-    inline void           checkAndFillBuffer(int bytesNeedToRead);
-
-    inline void           checkAndFlushBuffer(int bytesNeedToWrite);
-
-           void           fillBuffer();
-
-           void           flushBuffer();
-
-           void           pumpCount();
-
-    inline void           resetBuffer();
-
-    /***
-      *   
-      *    Helper
-      *
-      ***/
-    inline void            ensureStoring()                          const;
-
-    inline void            ensureLoading()                          const;
-
-    inline void            ensureStoreBuffer()                      const;
-
-    inline void            ensureLoadBuffer()                       const;
-
-    inline void            ensurePointer(void* const)               const;
-
-    inline void            ensureBufferLen(int  bufferLen)          const;
-
-    inline void            Assert(bool  toEval
-                                , const XMLExcepts::Codes toThrow)  const;
-
-
-    inline XMLSize_t          calBytesNeeded(XMLSize_t)  const;
-
-    inline XMLSize_t          alignAdjust(XMLSize_t)     const;
-
-    inline void            alignBufCur(XMLSize_t);
-
-    // Make XTemplateSerializer friend of XSerializeEngine so that
-    // we can call lookupStorePool and lookupLoadPool in the case of
-    // annotations.
-    friend class XTemplateSerializer;
-
-    // -------------------------------------------------------------------------------
-    //  data
-    //
-    //  fStoreLoad: 
-    //               Indicator: storing(serialization) or loading(de-serialization)
-    //
-    //  fStorerLevel:
-    //              The level of the serialize engine which created the binary 
-    //              stream that this serialize engine is loading
-    //
-    //              It is set by GrammarPool when loading
-    //
-    //  fGrammarPool:
-    //               Thw owning GrammarPool which instantiate this SerializeEngine 
-    //               instance
-    //
-    //  fInputStream:
-    //               Binary stream to read from (de-serialization), provided
-    //               by client application, not owned.
-    //
-    //  fOutputStream:
-    //               Binary stream to write to (serialization), provided 
-    //               by client application, not owned.
-    //
-    //  fBufSize:
-    //               The size of the internal buffer
-    //
-    //  fBufStart/fBufEnd:
-    //               
-    //               The internal buffer.
-    //  fBufEnd:
-    //               one beyond the last valid cell
-    //               fBufEnd === (fBufStart + fBufSize)
-    //
-    //  fBufCur:
-    //               The cursor of the buffer
-    //
-    //  fBufLoadMax:
-    //               Indicating the end of the valid content in the buffer
-    //
-    //  fStorePool:
-    //                Object collection for storing
-    //
-    //  fLoadPool:
-    //                Object collection for loading
-    //
-    //  fMapCount:
-    // -------------------------------------------------------------------------------
-    const short                            fStoreLoad;
-    short                                  fStorerLevel;
-
-    XMLGrammarPool*  const                 fGrammarPool;
-    BinInputStream*  const                 fInputStream;
-    BinOutputStream* const                 fOutputStream;
-
-    XMLSize_t                              fBufCount;
-
-    //buffer
-    const XMLSize_t                        fBufSize;
-	XMLByte* const                         fBufStart;
-	XMLByte* const                         fBufEnd; 
-    XMLByte*                               fBufCur;
-    XMLByte*                               fBufLoadMax; 
-
-
-
-    /***
-     *   Map for storing object
-     *
-     *   key:   XSerializable*
-     *          XProtoType*
-     *
-     *   value: XMLInteger*, owned
-     *
-     ***/
-    RefHashTableOf<XSerializedObjectId>*   fStorePool;  
-
-    /***
-     *   Vector for loading object, objects are NOT owned
-     *
-     *   data:   XSerializable*
-     *           XProtoType*
-     *
-     ***/
-    ValueVectorOf<void*>*                  fLoadPool;    
-
-    /***
-     *   object counter
-     ***/
-	XSerializedObjectId_t                  fObjectCount;
-
-    //to allow grammar pool to set storer level when loading
-    friend class XMLGrammarPoolImpl;
-};
-
-inline bool XSerializeEngine::isStoring() const
-{
-    return (fStoreLoad == mode_Store);
-}
-
-inline bool XSerializeEngine::isLoading() const
-{
-    return (fStoreLoad == mode_Load);
-}
-
-inline XSerializeEngine& operator<<(XSerializeEngine&       serEng
-                                  , XSerializable* const    serObj)
-{
-	serEng.write(serObj); 
-    return serEng; 
-}
-
-inline void XSerializeEngine::ensureStoring() const
-{
-	Assert(isStoring(), XMLExcepts::XSer_Storing_Violation);
-}
-
-inline void XSerializeEngine::ensureLoading() const
-{
-	Assert(isLoading(), XMLExcepts::XSer_Loading_Violation);
-}
-
-
-
-inline void XSerializeEngine::Assert(bool toEval
-                                   , const XMLExcepts::Codes toThrow) const
-{
-    if (!toEval)
-    {
-        ThrowXMLwithMemMgr(XSerializationException, toThrow, getMemoryManager());  
-    }
-
-}
-
-inline void XSerializeEngine::readString(XMLCh*&        toRead
-                                       , int&           bufferLen)
-{
-    int  dummyDataLen;                
-    readString(toRead, bufferLen, dummyDataLen);
-}
-
-inline void XSerializeEngine::readString(XMLCh*&        toRead)
-{
-    int  dummyBufferLen;
-    int  dummyDataLen;
-    readString(toRead, dummyBufferLen, dummyDataLen);
-}
-
-inline void XSerializeEngine::readString(XMLByte*&      toRead
-                                       , int&           bufferLen)
-{
-    int  dummyDataLen;
-    readString(toRead, bufferLen, dummyDataLen);
-}
-
-inline void XSerializeEngine::readString(XMLByte*&      toRead)
-{
-    int  dummyBufferLen;
-    int  dummyDataLen;
-    readString(toRead, dummyBufferLen, dummyDataLen);
-}
-
-inline 
-XMLSize_t XSerializeEngine::getBufSize() const
-{
-    return fBufSize;
-}
-
-inline 
-XMLSize_t XSerializeEngine::getBufCur() const
-{
-    return XMLSize_t (fBufCur-fBufStart);
-}
-
-inline 
-XMLSize_t XSerializeEngine::getBufCurAccumulated() const
-{
-    return (fBufCount - (isStoring() ? 0: 1)) * fBufSize + (fBufCur-fBufStart);
-}
-
-inline 
-XMLSize_t XSerializeEngine::getBufCount() const
-{
-    return fBufCount;
-}
-
-inline 
-unsigned short XSerializeEngine::getStorerLevel() const
-{
-    return fStorerLevel;
-}
-
-/***
- *  Ought to be nested class
- ***/
-class XSerializedObjectId : public XMemory
-{
-public:
-
-    ~XSerializedObjectId(){};
-
-private:
-
-    inline XSerializedObjectId(XSerializeEngine::XSerializedObjectId_t val):
-        fData(val) { };
-
-    inline XSerializeEngine::XSerializedObjectId_t getValue() const {return fData; };
-
-    friend class XSerializeEngine;
-
-private:
-    // -----------------------------------------------------------------------
-    //  Unimplemented constructors and operators
-    // -----------------------------------------------------------------------
-	XSerializedObjectId();
-    XSerializedObjectId(const XSerializedObjectId&);
-	XSerializedObjectId& operator=(const XSerializedObjectId&);
-
-    XSerializeEngine::XSerializedObjectId_t    fData;
-
-};
-
-
-XERCES_CPP_NAMESPACE_END
-
-#endif