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

📄 objstack.inl

📁 ncbi源码
💻 INL
字号:
/* * =========================================================================== * PRODUCTION $Log: objstack.inl,v $ * PRODUCTION Revision 1000.1  2004/04/12 17:15:30  gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.17 * PRODUCTION * =========================================================================== */#if defined(OBJSTACK__HPP)  &&  !defined(OBJSTACK__INL)#define OBJSTACK__INL/*  $Id: objstack.inl,v 1000.1 2004/04/12 17:15:30 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 !!!*/inlinevoid CObjectStackFrame::Reset(void){    m_FrameType = eFrameOther;    m_TypeInfo = 0;    m_MemberId = 0;    m_Notag = false;}inlineCObjectStackFrame::EFrameType CObjectStackFrame::GetFrameType(void) const{    return m_FrameType;}inlinebool CObjectStackFrame::HasTypeInfo(void) const{    return (m_FrameType != eFrameOther &&            m_FrameType != eFrameChoiceVariant &&            m_TypeInfo  != 0);}inlineTTypeInfo CObjectStackFrame::GetTypeInfo(void) const{    _ASSERT(m_FrameType != eFrameOther &&            m_FrameType != eFrameChoiceVariant);    _ASSERT(m_TypeInfo != 0);    return m_TypeInfo;}inlinebool CObjectStackFrame::HasMemberId(void) const{    return (m_FrameType == eFrameClassMember ||            m_FrameType == eFrameChoiceVariant) && (m_MemberId != 0);}inlineconst CMemberId& CObjectStackFrame::GetMemberId(void) const{    _ASSERT(m_FrameType == eFrameClassMember ||            m_FrameType == eFrameChoiceVariant ||            m_FrameType == eFrameArray);    _ASSERT(m_MemberId != 0);    return *m_MemberId;}inlinevoid CObjectStackFrame::SetMemberId(const CMemberId& memberid){    _ASSERT(m_FrameType == eFrameClassMember ||            m_FrameType == eFrameChoiceVariant);    m_MemberId = &memberid;}inlinevoid CObjectStackFrame::SetNotag(bool set){    m_Notag = set;#if defined(NCBI_SERIAL_IO_TRACE)    cout << ", "  << (m_Notag ? "N" : "!N");#endif}inlinebool CObjectStackFrame::GetNotag(void) const{    return m_Notag;}inlinesize_t CObjectStack::GetStackDepth(void) const{    return static_cast<size_t>(m_StackPtr - m_Stack);}inlinebool CObjectStack::StackIsEmpty(void) const{    return m_Stack == m_StackPtr;}inlineCObjectStack::TFrame& CObjectStack::PushFrame(void){    TFrame* newPtr = m_StackPtr + 1;    if ( newPtr >= m_StackEnd )        return PushFrameLong();    m_StackPtr = newPtr;    return *newPtr;}inlineCObjectStack::TFrame& CObjectStack::PushFrame(EFrameType type){    TFrame& frame = PushFrame();    frame.m_FrameType = type;#if defined(NCBI_SERIAL_IO_TRACE)    TracePushFrame(true);#endif    return frame;}inlineCObjectStack::TFrame& CObjectStack::PushFrame(EFrameType type,                                              TTypeInfo typeInfo){    _ASSERT(type != TFrame::eFrameOther &&            type != TFrame::eFrameClassMember &&            type != TFrame::eFrameChoiceVariant);    _ASSERT(typeInfo != 0);    TFrame& frame = PushFrame(type);    frame.m_TypeInfo = typeInfo;    return frame;}inlineCObjectStack::TFrame& CObjectStack::PushFrame(EFrameType type,                                              const CMemberId& memberId){    _ASSERT(type == TFrame::eFrameClassMember ||            type == TFrame::eFrameChoiceVariant);    TFrame& frame = PushFrame(type);    frame.m_MemberId = &memberId;    x_PushStackPath();    return frame;}inlinevoid CObjectStack::PopFrame(void){    _ASSERT(!StackIsEmpty());#if defined(NCBI_SERIAL_IO_TRACE)    TracePushFrame(false);#endif    x_PopStackPath();    m_StackPtr->Reset();    --m_StackPtr;}inlineCObjectStack::TFrame& CObjectStack::FetchFrameFromTop(size_t index){    TFrame* ptr = m_StackPtr - index;    _ASSERT(ptr > m_Stack);    return *ptr;}inlineconst CObjectStack::TFrame& CObjectStack::FetchFrameFromTop(size_t index) const{    TFrame* ptr = m_StackPtr - index;    _ASSERT(ptr > m_Stack);    return *ptr;}inlineconst CObjectStack::TFrame& CObjectStack::TopFrame(void) const{    _ASSERT(!StackIsEmpty());    return *m_StackPtr;}inlineCObjectStack::TFrame& CObjectStack::TopFrame(void){    _ASSERT(!StackIsEmpty());    return *m_StackPtr;}inlinevoid CObjectStack::SetTopMemberId(const CMemberId& memberid){    x_PopStackPath();    TopFrame().SetMemberId(memberid);    x_PushStackPath();}inlineconst CObjectStack::TFrame& CObjectStack::FetchFrameFromBottom(size_t index) const{    TFrame* ptr = m_Stack + 1 + index;    _ASSERT(ptr <= m_StackPtr);    return *ptr;}inlinevoid CObjectStack::WatchPathHooks(bool set){    m_WatchPathHooks = set;    m_PathValid = false;    GetStackPath();}#endif /* def OBJSTACK__HPP  &&  ndef OBJSTACK__INL *//* ---------------------------------------------------------------------------* $Log: objstack.inl,v $* Revision 1000.1  2004/04/12 17:15:30  gouriano* PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.17** Revision 1.17  2004/01/05 14:24:09  gouriano* Added possibility to set serialization hooks by stack path** Revision 1.16  2003/08/25 15:58:32  gouriano* added possibility to use namespaces in XML i/o streams** Revision 1.15  2003/03/10 18:52:37  gouriano* use new structured exceptions (based on CException)** Revision 1.14  2002/12/26 19:27:31  gouriano* removed Get/SetSkipTag and eFrameAttlist - not needed any more** Revision 1.13  2002/12/23 18:38:51  dicuccio* Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.* Moved all CVS logs to the end.** Revision 1.12  2002/12/12 21:11:15  gouriano* added some debug tracing** Revision 1.11  2002/11/19 19:45:13  gouriano* added const qualifier to GetSkipTag/GetNotag functions** Revision 1.10  2002/11/14 20:53:41  gouriano* added support of XML attribute lists** Revision 1.9  2002/10/15 13:40:33  gouriano* added "skiptag" flag** Revision 1.8  2002/09/26 18:12:27  gouriano* added HasMemberId method** Revision 1.7  2001/08/15 20:53:04  juran* Heed warnings.** Revision 1.6  2000/09/18 20:00:08  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.5  2000/09/01 13:16:02  vasilche* Implemented class/container/choice iterators.* Implemented CObjectStreamCopier for copying data without loading into memory.** Revision 1.4  2000/08/15 19:44:42  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.** Revision 1.3  2000/06/07 19:45:44  vasilche* Some code cleaning.* Macros renaming in more clear way.* BEGIN_NAMED_*_INFO, ADD_*_MEMBER, ADD_NAMED_*_MEMBER.** Revision 1.2  2000/06/01 19:06:58  vasilche* Added parsing of XML data.** Revision 1.1  2000/05/24 20:08:15  vasilche* Implemented XML dump.** ===========================================================================*/

⌨️ 快捷键说明

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