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

📄 objhook.hpp

📁 ncbi源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: objhook.hpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:38:50  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.15 * PRODUCTION * =========================================================================== */#ifndef OBJHOOK__HPP#define OBJHOOK__HPP/*  $Id: objhook.hpp,v 1000.1 2004/06/01 19:38:50 gouriano Exp $* ===========================================================================**                            PUBLIC DOMAIN NOTICE*               National Center for Biotechnology Information**  This software/database is a "United States Government Work" under the*  terms of the United States Copyright Act.  It was written as part of*  the author's official duties as a United States Government employee and*  thus cannot be copyrighted.  This software/database is freely available*  to the public for use. The National Library of Medicine and the U.S.*  Government have not placed any restriction on its use or reproduction.**  Although all reasonable efforts have been taken to ensure the accuracy*  and reliability of the software and data, the NLM and the U.S.*  Government do not and cannot warrant the performance or results that*  may be obtained by using this software or data. The NLM and the U.S.*  Government disclaim all warranties, express or implied, including*  warranties of performance, merchantability or fitness for any particular*  purpose.**  Please cite the author in any work or product based on this material.** ===========================================================================** Author: Eugene Vasilchenko** File Description:*   !!! PUT YOUR DESCRIPTION HERE !!!*/#include <corelib/ncbistd.hpp>#include <corelib/ncbiobj.hpp>#include <serial/serialdef.hpp>#include <serial/objecttype.hpp>#include <serial/objstack.hpp>#include <serial/objectiter.hpp>/** @addtogroup HookSupport * * @{ */BEGIN_NCBI_SCOPEclass CObjectIStream;class CObjectOStream;class CObjectStreamCopier;class CObjectInfo;class CConstObjectInfo;class CObjectTypeInfo;class NCBI_XSERIAL_EXPORT CReadObjectHook : public CObject{public:    virtual ~CReadObjectHook(void);        virtual void ReadObject(CObjectIStream& in,                            const CObjectInfo& object) = 0;    // Default actions    void DefaultRead(CObjectIStream& in,                     const CObjectInfo& object);    void DefaultSkip(CObjectIStream& in,                     const CObjectInfo& object);};class NCBI_XSERIAL_EXPORT CReadClassMemberHook : public CObject{public:    virtual ~CReadClassMemberHook(void);    virtual void ReadClassMember(CObjectIStream& in,                                 const CObjectInfoMI& member) = 0;    virtual void ReadMissingClassMember(CObjectIStream& in,                                        const CObjectInfoMI& member);    void DefaultRead(CObjectIStream& in,                     const CObjectInfoMI& object);    void DefaultSkip(CObjectIStream& in,                     const CObjectInfoMI& object);    void ResetMember(const CObjectInfoMI& object,                     CObjectInfoMI::EEraseFlag flag =                         CObjectInfoMI::eErase_Optional);};class NCBI_XSERIAL_EXPORT CReadChoiceVariantHook : public CObject{public:    virtual ~CReadChoiceVariantHook(void);    virtual void ReadChoiceVariant(CObjectIStream& in,                                   const CObjectInfoCV& variant) = 0;    void DefaultRead(CObjectIStream& in,                     const CObjectInfoCV& object);    // No default skip method - can not skip variants};class NCBI_XSERIAL_EXPORT CReadContainerElementHook : public CObject{public:    virtual ~CReadContainerElementHook(void);    virtual void ReadContainerElement(CObjectIStream& in,                                      const CObjectInfo& container) = 0;};class NCBI_XSERIAL_EXPORT CWriteObjectHook : public CObject{public:    virtual ~CWriteObjectHook(void);        virtual void WriteObject(CObjectOStream& out,                             const CConstObjectInfo& object) = 0;    void DefaultWrite(CObjectOStream& out,                      const CConstObjectInfo& object);};class NCBI_XSERIAL_EXPORT CWriteClassMemberHook : public CObject{public:    virtual ~CWriteClassMemberHook(void);        virtual void WriteClassMember(CObjectOStream& out,                                  const CConstObjectInfoMI& member) = 0;    void DefaultWrite(CObjectOStream& out,                      const CConstObjectInfoMI& member);};class NCBI_XSERIAL_EXPORT CWriteChoiceVariantHook : public CObject{public:    virtual ~CWriteChoiceVariantHook(void);    virtual void WriteChoiceVariant(CObjectOStream& out,                                    const CConstObjectInfoCV& variant) = 0;    void DefaultWrite(CObjectOStream& out,                      const CConstObjectInfoCV& variant);};class NCBI_XSERIAL_EXPORT CSkipObjectHook : public CObject{public:    virtual ~CSkipObjectHook(void);        virtual void SkipObject(CObjectIStream& stream,                            const CObjectTypeInfo& type) = 0;//    void DefaultSkip(CObjectIStream& stream,//                     const CObjectTypeInfo& type);};class NCBI_XSERIAL_EXPORT CSkipClassMemberHook : public CObject{public:    virtual ~CSkipClassMemberHook(void);        virtual void SkipClassMember(CObjectIStream& stream,                                 const CObjectTypeInfoMI& member) = 0;    virtual void SkipMissingClassMember(CObjectIStream& stream,                                        const CObjectTypeInfoMI& member);//    void DefaultSkip(CObjectIStream& stream,//                     const CObjectTypeInfoMI& member);};class NCBI_XSERIAL_EXPORT CSkipChoiceVariantHook : public CObject{public:    virtual ~CSkipChoiceVariantHook(void);    virtual void SkipChoiceVariant(CObjectIStream& stream,                                   const CObjectTypeInfoCV& variant) = 0;//    void DefaultSkip(CObjectIStream& stream,//                     const CObjectTypeInfoCV& variant);};class NCBI_XSERIAL_EXPORT CCopyObjectHook : public CObject{public:    virtual ~CCopyObjectHook(void);        virtual void CopyObject(CObjectStreamCopier& copier,                            const CObjectTypeInfo& type) = 0;    void DefaultCopy(CObjectStreamCopier& copier,                     const CObjectTypeInfo& type);};class NCBI_XSERIAL_EXPORT CCopyClassMemberHook : public CObject{public:    virtual ~CCopyClassMemberHook(void);        virtual void CopyClassMember(CObjectStreamCopier& copier,                                 const CObjectTypeInfoMI& member) = 0;    virtual void CopyMissingClassMember(CObjectStreamCopier& copier,                                        const CObjectTypeInfoMI& member);    void DefaultCopy(CObjectStreamCopier& copier,                     const CObjectTypeInfoMI& member);};class NCBI_XSERIAL_EXPORT CCopyChoiceVariantHook : public CObject{public:    virtual ~CCopyChoiceVariantHook(void);    virtual void CopyChoiceVariant(CObjectStreamCopier& copier,                                   const CObjectTypeInfoCV& variant) = 0;    void DefaultCopy(CObjectStreamCopier& copier,                     const CObjectTypeInfoCV& variant);};enum EDefaultHookAction {    eDefault_Normal,        // read or write data    eDefault_Skip           // skip data};class NCBI_XSERIAL_EXPORT CObjectHookGuardBase{protected:    // object read hook    CObjectHookGuardBase(const CObjectTypeInfo& info,                         CReadObjectHook& hook,                         CObjectIStream* stream = 0);    // object write hook    CObjectHookGuardBase(const CObjectTypeInfo& info,                         CWriteObjectHook& hook,                         CObjectOStream* stream = 0);    // object skip hook    CObjectHookGuardBase(const CObjectTypeInfo& info,                         CSkipObjectHook& hook,                         CObjectIStream* stream = 0);    // object copy hook    CObjectHookGuardBase(const CObjectTypeInfo& info,                         CCopyObjectHook& hook,                         CObjectStreamCopier* stream = 0);

⌨️ 快捷键说明

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