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

📄 objhook.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: objhook.cpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:40:51  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.10 * PRODUCTION * =========================================================================== *//*  $Id: objhook.cpp,v 1000.1 2004/06/01 19:40:51 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 !!!** ---------------------------------------------------------------------------* $Log: objhook.cpp,v $* Revision 1000.1  2004/06/01 19:40:51  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.10** Revision 1.10  2004/05/17 21:03:03  gorelenk* Added include of PCH ncbi_pch.hpp** Revision 1.9  2003/08/11 15:25:52  grichenk* Added possibility to reset an object member from* a read hook (including non-optional members).** Revision 1.8  2003/07/29 19:14:31  vasilche* Added missing methods.** Revision 1.7  2003/07/29 18:47:47  vasilche* Fixed thread safeness of object stream hooks.** Revision 1.6  2002/09/19 14:00:38  grichenk* Implemented CObjectHookGuard for write and copy hooks* Added DefaultRead/Write/Copy methods to base hook classes** Revision 1.5  2001/05/17 15:07:08  lavr* Typos corrected** Revision 1.4  2000/10/20 15:51:40  vasilche* Fixed data error processing.* Added interface for constructing container objects directly into output stream.* object.hpp, object.inl and object.cpp were split to* objectinfo.*, objecttype.*, objectiter.* and objectio.*.** Revision 1.3  2000/09/26 17:38:21  vasilche* Fixed incomplete choiceptr implementation.* Removed temporary comments.** Revision 1.2  2000/09/18 20:00:23  vasilche* Separated CVariantInfo and CMemberInfo.* Implemented copy hooks.* All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.* Most type specific functions now are implemented via function pointers instead of virtual functions.** Revision 1.1  2000/08/15 19:44:48  vasilche* Added Read/Write hooks:* CReadObjectHook/CWriteObjectHook for objects of specified type.* CReadClassMemberHook/CWriteClassMemberHook for specified members.* CReadChoiceVariantHook/CWriteChoiceVariant for specified choice variants.* CReadContainerElementHook/CWriteContainerElementsHook for containers.** ===========================================================================*/#include <ncbi_pch.hpp>#include <corelib/ncbistd.hpp>#include <serial/objhook.hpp>#include <serial/objectinfo.hpp>#include <serial/objectiter.hpp>#include <serial/objistr.hpp>#include <serial/objostr.hpp>#include <serial/member.hpp>#include <serial/memberid.hpp>BEGIN_NCBI_SCOPECReadObjectHook::~CReadObjectHook(void){}CReadClassMemberHook::~CReadClassMemberHook(void){}void CReadClassMemberHook::ReadMissingClassMember(CObjectIStream& in,                                                  const CObjectInfoMI& member){    member.GetMemberInfo()->        DefaultReadMissingMember(in, member.GetClassObject().GetObjectPtr());}CReadChoiceVariantHook::~CReadChoiceVariantHook(void){}CReadContainerElementHook::~CReadContainerElementHook(void){}CWriteObjectHook::~CWriteObjectHook(void){}CWriteClassMemberHook::~CWriteClassMemberHook(void){}CWriteChoiceVariantHook::~CWriteChoiceVariantHook(void){}CSkipObjectHook::~CSkipObjectHook(void){}CSkipClassMemberHook::~CSkipClassMemberHook(void){}void CSkipClassMemberHook::SkipMissingClassMember(CObjectIStream& stream,                                                  const CObjectTypeInfoMI& member){    member.GetMemberInfo()->DefaultSkipMissingMember(stream);}CSkipChoiceVariantHook::~CSkipChoiceVariantHook(void){}CCopyObjectHook::~CCopyObjectHook(void){}CCopyClassMemberHook::~CCopyClassMemberHook(void){}void CCopyClassMemberHook::CopyMissingClassMember(CObjectStreamCopier& copier,                                                  const CObjectTypeInfoMI& member){    member.GetMemberInfo()->DefaultCopyMissingMember(copier);}CCopyChoiceVariantHook::~CCopyChoiceVariantHook(void){}void CReadObjectHook::DefaultRead(CObjectIStream& in,                                  const CObjectInfo& object){    object.GetTypeInfo()->DefaultReadData(in, object.GetObjectPtr());}void CReadObjectHook::DefaultSkip(CObjectIStream& in,                                  const CObjectInfo& object){    object.GetTypeInfo()->DefaultSkipData(in);}void CReadClassMemberHook::DefaultRead(CObjectIStream& in,                                       const CObjectInfoMI& object){    in.ReadClassMember(object);}void CReadClassMemberHook::ResetMember(const CObjectInfoMI& object,                                       CObjectInfoMI::EEraseFlag flag){    const_cast<CObjectInfoMI&>(object).Erase(flag);}void CReadClassMemberHook::DefaultSkip(CObjectIStream& in,                                       const CObjectInfoMI& object){    in.SkipObject(object.GetMember());}void CReadChoiceVariantHook::DefaultRead(CObjectIStream& in,                                         const CObjectInfoCV& object){    in.ReadChoiceVariant(object);}void CWriteObjectHook::DefaultWrite(CObjectOStream& out,                                    const CConstObjectInfo& object){    object.GetTypeInfo()->DefaultWriteData(out, object.GetObjectPtr());}void CWriteClassMemberHook::DefaultWrite(CObjectOStream& out,                                         const CConstObjectInfoMI& member){    out.WriteClassMember(member);}void CWriteChoiceVariantHook::DefaultWrite(CObjectOStream& out,                                           const CConstObjectInfoCV& variant){    out.WriteChoiceVariant(variant);}void CCopyObjectHook::DefaultCopy(CObjectStreamCopier& copier,                                  const CObjectTypeInfo& type){    type.GetTypeInfo()->DefaultCopyData(copier);}void CCopyClassMemberHook::DefaultCopy(CObjectStreamCopier& copier,                                       const CObjectTypeInfoMI& member){    member.GetMemberInfo()->DefaultCopyMember(copier);}void CCopyChoiceVariantHook::DefaultCopy(CObjectStreamCopier& copier,                                         const CObjectTypeInfoCV& variant){    variant.GetVariantInfo()->DefaultCopyVariant(copier);}CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info,                                           CReadObjectHook& hook,                                           CObjectIStream* stream)    : m_Hook(&hook),      m_HookMode(eHook_Read),      m_HookType(eHook_Object){    m_Stream.m_IStream = stream;    if ( stream ) {        info.SetLocalReadHook(*stream, &hook);    }    else {        info.SetGlobalReadHook(&hook);    }}CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info,                                           CWriteObjectHook& hook,                                           CObjectOStream* stream)    : m_Hook(&hook),      m_HookMode(eHook_Write),      m_HookType(eHook_Object){    m_Stream.m_OStream = stream;    if ( stream ) {        info.SetLocalWriteHook(*stream, &hook);    }    else {        info.SetGlobalWriteHook(&hook);    }}CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info,                                           CSkipObjectHook& hook,                                           CObjectIStream* stream)    : m_Hook(&hook),      m_HookMode(eHook_Skip),      m_HookType(eHook_Object){    m_Stream.m_IStream = stream;    if ( stream ) {        info.SetLocalSkipHook(*stream, &hook);    }    else {        info.SetGlobalSkipHook(&hook);    }}CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info,                                           CCopyObjectHook& hook,                                           CObjectStreamCopier* stream)    : m_Hook(&hook),      m_HookMode(eHook_Copy),      m_HookType(eHook_Object)

⌨️ 快捷键说明

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