📄 objhook.hpp
字号:
/* * =========================================================================== * 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 + -