context.cpp

来自「ncbi源码」· C++ 代码 · 共 601 行 · 第 1/2 页

CPP
601
字号
                (len == 13  &&  NStr::EndsWith(acc, "0000000"));            if ( m_IsWGSMaster ) {                m_WGSMasterAccn = acc;                m_WGSMasterName = tsip->CanGetName() ? tsip->GetName() : kEmptyStr;            }        }         // GBB source        m_ShowGBBSource = m_ShowGBBSource  ||                            ((acc_type & CSeq_id::eAcc_gsdb_dirsub) != 0);    }}CSeq_inst::TRepr CBioseqContext::x_GetRepr(void) const{    return m_Handle.IsSetInst_Repr() ?        m_Handle.GetInst_Repr() : CSeq_inst::eRepr_not_set;}const CMolInfo* CBioseqContext::x_GetMolInfo(void) const{    CSeqdesc_CI desc(m_Handle, CSeqdesc::e_Molinfo);    return desc ? &desc->GetMolinfo() : 0;}bool CBioseqContext::x_IsPart() const{    if ( m_Repr == CSeq_inst::eRepr_raw    ||         m_Repr == CSeq_inst::eRepr_const  ||         m_Repr == CSeq_inst::eRepr_delta  ||         m_Repr == CSeq_inst::eRepr_virtual ) {        CSeq_entry_Handle eh = m_Handle.GetParentEntry();        _ASSERT(eh  &&  eh.IsSeq());        eh = eh.GetParentEntry();        if ( eh  &&  eh.IsSet() ) {            CBioseq_set_Handle bsst = eh.GetSet();            if ( bsst.IsSetClass()  &&                   bsst.GetClass() == CBioseq_set::eClass_parts ) {                return true;            }        }    }    return false;}bool CBioseqContext::x_HasParts(void) const{    _ASSERT(IsSegmented());    CSeq_entry_Handle h =        m_Handle.GetExactComplexityLevel(CBioseq_set::eClass_segset);    if ( !h ) {        return false;    }        // make sure the segmented set contains our bioseq    {{        bool has_seq = false;        for ( CSeq_entry_CI it(h); it; ++it ) {            if ( it->IsSeq()  &&  it->GetSeq() == m_Handle ) {                has_seq = true;                break;            }        }        if ( !has_seq ) {            return false;        }    }}    // find the parts set    {{        for ( CSeq_entry_CI it(h); it; ++it ) {            if ( it->IsSet()  &&  it->GetSet().IsSetClass()  &&                it->GetSet().GetClass() == CBioseq_set::eClass_parts ) {                return true;            }        }    }}    return false;}bool CBioseqContext::x_IsDeltaLitOnly(void) const{    _ASSERT(IsDelta());    if ( m_Handle.IsSetInst_Ext() ) {        const CBioseq_Handle::TInst_Ext& ext = m_Handle.GetInst_Ext();        if ( ext.IsDelta() ) {            ITERATE (CDelta_ext::Tdata, it, ext.GetDelta().Get()) {                if ( (*it)->IsLoc() ) {                    return false;                }            }        }    }    return true;}SIZE_TYPE CBioseqContext::x_GetPartNumber(void){    return m_Master ? m_Master->GetPartNumber(m_Handle) : 0;}bool CBioseqContext::x_IsInGPS(void) const{    CSeq_entry_Handle e =         m_Handle.GetExactComplexityLevel(CBioseq_set::eClass_gen_prod_set);    return e;}bool CBioseqContext::x_IsInNucProt(void) const{    CSeq_entry_Handle e =         m_Handle.GetExactComplexityLevel(CBioseq_set::eClass_nuc_prot);    return e;}bool CBioseqContext::DoContigStyle(void) const{    const CFlatFileConfig& cfg = Config();    if ( cfg.IsStyleContig() ) {        return true;    } else if ( cfg.IsStyleNormal() ) {        if ( (IsSegmented()  &&  !HasParts())  ||             (IsDelta()  &&  !IsDeltaLitOnly()) ) {            return true;        }    }    return false;}///////////////////////////////////////////////////////////////////////////////// CMasterContextCMasterContext::CMasterContext(const CBioseq_Handle& seq) :    m_Handle(seq){    _ASSERT(seq);    _ASSERT(seq.GetInst_Ext().IsSeg());    x_SetNumParts();    x_SetBaseName();}CMasterContext::~CMasterContext(void){}SIZE_TYPE CMasterContext::GetPartNumber(const CBioseq_Handle& part){    if ( !part ) {        return 0;    }    CScope& scope = m_Handle.GetScope();    SIZE_TYPE serial = 1;    ITERATE (CSeg_ext::Tdata, it, m_Handle.GetInst_Ext().GetSeg().Get()) {        if ( (*it)->IsNull() ) {            continue;        }        const CSeq_id& id = GetId(**it);        CBioseq_Handle bsh = scope.GetBioseqHandleFromTSE(id, m_Handle);        if ( bsh   &&  bsh == part ) {            return serial;        }        ++serial;    }    return 0;}void CMasterContext::x_SetNumParts(void){    SIZE_TYPE count = 0;    // count only non-gap parts    ITERATE (CSeg_ext::Tdata, it, m_Handle.GetInst_Ext().GetSeg().Get()) {        if ( (*it)->IsNull() ) {            continue;        }        ++count;    }    m_NumParts = count;}void CMasterContext::x_SetBaseName(void){    // !!!}END_SCOPE(objects)END_NCBI_SCOPE/** ===========================================================================** $Log: context.cpp,v $* Revision 1000.1  2004/06/01 19:43:52  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.18** Revision 1.18  2004/05/21 21:42:54  gorelenk* Added PCH ncbi_pch.hpp** Revision 1.17  2004/05/08 12:11:39  dicuccio* Use CSeq_id::GetLabel() instead of GetSeqIdString()** Revision 1.16  2004/05/06 17:48:49  shomrat* + IsEMBL and IsInNucProt** Revision 1.15  2004/04/27 15:12:24  shomrat* Added logic for partial range formatting** Revision 1.14  2004/04/22 15:52:00  shomrat* Refactring of context** Revision 1.13  2004/03/31 17:15:09  shomrat* name changes** Revision 1.12  2004/03/26 17:23:38  shomrat* fixed initialization of m_IsWGS** Revision 1.11  2004/03/25 20:36:02  shomrat* Use handles** Revision 1.10  2004/03/24 18:57:04  vasilche* CBioseq_Handle::GetComplexityLevel() now returns CSeq_entry_Handle.** Revision 1.9  2004/03/18 15:36:26  shomrat* + new flag ShowFtableRefs** Revision 1.8  2004/03/10 21:25:42  shomrat* Fix m_RefseqInfo initialization** Revision 1.7  2004/03/05 18:46:26  shomrat* Added customization flags** Revision 1.6  2004/02/19 18:03:29  shomrat* changed implementation of GetPreferredSynonym** Revision 1.5  2004/02/11 22:49:04  shomrat* using types in flag file** Revision 1.4  2004/02/11 16:49:16  shomrat* added user customization flags** Revision 1.3  2004/01/14 16:09:04  shomrat* multiple changes (work in progress)** Revision 1.2  2003/12/18 17:43:31  shomrat* context.hpp moved** Revision 1.1  2003/12/17 20:18:44  shomrat* Initial Revision (adapted from flat lib)** Revision 1.4  2003/06/02 16:06:42  dicuccio* Rearranged src/objects/ subtree.  This includes the following shifts:*     - src/objects/asn2asn --> arc/app/asn2asn*     - src/objects/testmedline --> src/objects/ncbimime/test*     - src/objects/objmgr --> src/objmgr*     - src/objects/util --> src/objmgr/util*     - src/objects/alnmgr --> src/objtools/alnmgr*     - src/objects/flat --> src/objtools/flat*     - src/objects/validator --> src/objtools/validator*     - src/objects/cddalignview --> src/objtools/cddalignview* In addition, libseq now includes six of the objects/seq... libs, and libmmdb* replaces the three libmmdb? libs.** Revision 1.3  2003/03/21 18:49:17  ucko* Turn most structs into (accessor-requiring) classes; replace some* formerly copied fields with pointers to the original data.** Revision 1.2  2003/03/11 15:37:51  kuznets* iterate -> ITERATE** Revision 1.1  2003/03/10 16:39:09  ucko* Initial check-in of new flat-file generator*** ===========================================================================*/

⌨️ 快捷键说明

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