--- a/secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSerializeEngine.hpp Thu May 27 12:58:35 2010 +0300
+++ /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