⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xserializeengine.hpp

📁 经典开源游戏glest的源代码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
       *       *  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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -