📄 objectiter.hpp
字号:
/* * =========================================================================== * PRODUCTION $Log: objectiter.hpp,v $ * PRODUCTION Revision 1000.2 2004/06/01 19:38:47 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11 * PRODUCTION * =========================================================================== */#ifndef OBJECTITER__HPP#define OBJECTITER__HPP/* $Id: objectiter.hpp,v 1000.2 2004/06/01 19:38:47 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 <serial/objectinfo.hpp>/** @addtogroup UserCodeSupport * * @{ */BEGIN_NCBI_SCOPEclass NCBI_XSERIAL_EXPORT CConstObjectInfoEI{public: CConstObjectInfoEI(void); CConstObjectInfoEI(const CConstObjectInfo& object); CConstObjectInfoEI& operator=(const CConstObjectInfo& object); bool Valid(void) const; operator bool(void) const; bool operator!(void) const; void Next(void); CConstObjectInfoEI& operator++(void); CConstObjectInfo GetElement(void) const; CConstObjectInfo operator*(void) const; bool CanGet(void) const { return true; }private: bool CheckValid(void) const; void ReportNonValid(void) const; CConstContainerElementIterator m_Iterator;#if _DEBUG mutable enum { eNone, eValid, eNext, eErase } m_LastCall;#endif};class NCBI_XSERIAL_EXPORT CObjectInfoEI{public: CObjectInfoEI(void); CObjectInfoEI(const CObjectInfo& object); CObjectInfoEI& operator=(const CObjectInfo& object); bool Valid(void) const; operator bool(void) const; bool operator!(void) const; void Next(void); CObjectInfoEI& operator++(void); CObjectInfo GetElement(void) const; CObjectInfo operator*(void) const; void Erase(void); bool CanGet(void) const { return true; }private: bool CheckValid(void) const; void ReportNonValid(void) const; CContainerElementIterator m_Iterator;#if _DEBUG mutable enum { eNone, eValid, eNext, eErase } m_LastCall;#endif};class NCBI_XSERIAL_EXPORT CObjectTypeInfoII // item iterator (either member or variant){public: const string& GetAlias(void) const; bool Valid(void) const; operator bool(void) const; bool operator!(void) const; bool operator==(const CObjectTypeInfoII& iter) const; bool operator!=(const CObjectTypeInfoII& iter) const; void Next(void);protected: CObjectTypeInfoII(void); CObjectTypeInfoII(const CClassTypeInfoBase* typeInfo); CObjectTypeInfoII(const CClassTypeInfoBase* typeInfo, TMemberIndex index); const CObjectTypeInfo& GetOwnerType(void) const; const CClassTypeInfoBase* GetClassTypeInfoBase(void) const; TMemberIndex GetItemIndex(void) const; const CItemInfo* GetItemInfo(void) const; void Init(const CClassTypeInfoBase* typeInfo); void Init(const CClassTypeInfoBase* typeInfo, TMemberIndex index); bool CanGet(void) const { return true; }private: CObjectTypeInfo m_OwnerType; TMemberIndex m_ItemIndex; TMemberIndex m_LastItemIndex; void ReportNonValid(void) const; protected:#if _DEBUG mutable enum { eNone, eValid, eNext, eErase } m_LastCall;#endif bool CheckValid(void) const;};class NCBI_XSERIAL_EXPORT CObjectTypeInfoMI : public CObjectTypeInfoII{ typedef CObjectTypeInfoII CParent;public: CObjectTypeInfoMI(void); CObjectTypeInfoMI(const CObjectTypeInfo& info); CObjectTypeInfoMI(const CObjectTypeInfo& info, TMemberIndex index); TMemberIndex GetMemberIndex(void) const; CObjectTypeInfoMI& operator++(void); CObjectTypeInfoMI& operator=(const CObjectTypeInfo& info); CObjectTypeInfo GetClassType(void) const; operator CObjectTypeInfo(void) const; CObjectTypeInfo GetMemberType(void) const; CObjectTypeInfo operator*(void) const; void SetLocalReadHook(CObjectIStream& stream, CReadClassMemberHook* hook) const; void SetGlobalReadHook(CReadClassMemberHook* hook) const; void ResetLocalReadHook(CObjectIStream& stream) const; void ResetGlobalReadHook(void) const; void SetPathReadHook(CObjectIStream* in, const string& path, CReadClassMemberHook* hook) const; void SetLocalWriteHook(CObjectOStream& stream, CWriteClassMemberHook* hook) const; void SetGlobalWriteHook(CWriteClassMemberHook* hook) const; void ResetLocalWriteHook(CObjectOStream& stream) const; void ResetGlobalWriteHook(void) const; void SetPathWriteHook(CObjectOStream* stream, const string& path, CWriteClassMemberHook* hook) const; void SetLocalSkipHook(CObjectIStream& stream, CSkipClassMemberHook* hook) const; void SetGlobalSkipHook(CSkipClassMemberHook* hook) const; void ResetLocalSkipHook(CObjectIStream& stream) const; void ResetGlobalSkipHook(void) const; void SetPathSkipHook(CObjectIStream* stream, const string& path, CSkipClassMemberHook* hook) const; void SetLocalCopyHook(CObjectStreamCopier& stream, CCopyClassMemberHook* hook) const; void SetGlobalCopyHook(CCopyClassMemberHook* hook) const; void ResetLocalCopyHook(CObjectStreamCopier& stream) const; void ResetGlobalCopyHook(void) const; void SetPathCopyHook(CObjectStreamCopier* stream, const string& path, CCopyClassMemberHook* hook) const;public: // mostly for internal use const CMemberInfo* GetMemberInfo(void) const;protected: void Init(const CObjectTypeInfo& info); void Init(const CObjectTypeInfo& info, TMemberIndex index); const CClassTypeInfo* GetClassTypeInfo(void) const; bool IsSet(const CConstObjectInfo& object) const;private: CMemberInfo* GetNCMemberInfo(void) const;};class NCBI_XSERIAL_EXPORT CObjectTypeInfoVI : public CObjectTypeInfoII{ typedef CObjectTypeInfoII CParent;public: CObjectTypeInfoVI(const CObjectTypeInfo& info); CObjectTypeInfoVI(const CObjectTypeInfo& info, TMemberIndex index); TMemberIndex GetVariantIndex(void) const; CObjectTypeInfoVI& operator++(void); CObjectTypeInfoVI& operator=(const CObjectTypeInfo& info); CObjectTypeInfo GetChoiceType(void) const; CObjectTypeInfo GetVariantType(void) const; CObjectTypeInfo operator*(void) const; void SetLocalReadHook(CObjectIStream& stream, CReadChoiceVariantHook* hook) const; void SetGlobalReadHook(CReadChoiceVariantHook* hook) const; void ResetLocalReadHook(CObjectIStream& stream) const; void ResetGlobalReadHook(void) const; void SetPathReadHook(CObjectIStream* stream, const string& path, CReadChoiceVariantHook* hook) const; void SetLocalWriteHook(CObjectOStream& stream, CWriteChoiceVariantHook* hook) const; void SetGlobalWriteHook(CWriteChoiceVariantHook* hook) const;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -