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

📄 tse_info.hpp

📁 ncbi源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: tse_info.hpp,v $ * PRODUCTION Revision 1000.2  2004/04/12 17:28:46  gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.49 * PRODUCTION * =========================================================================== */#ifndef OBJECTS_OBJMGR_IMPL___TSE_INFO__HPP#define OBJECTS_OBJMGR_IMPL___TSE_INFO__HPP/*  $Id: tse_info.hpp,v 1000.2 2004/04/12 17:28:46 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: Aleksey Grichenko, Eugene Vasilchenko** File Description:*   TSE info -- entry for data source seq-id to TSE map**/#include <objmgr/impl/seq_entry_info.hpp>#include <objmgr/annot_selector.hpp>#include <objmgr/seq_id_handle.hpp>#include <util/rangemap.hpp>#include <corelib/ncbiobj.hpp>#include <corelib/ncbimtx.hpp>#include <objmgr/impl/annot_object_index.hpp>#include <map>#include <set>#include <vector>BEGIN_NCBI_SCOPEBEGIN_SCOPE(objects)class CScope_Impl;class CBioseq_Info;class CSeq_entry_Info;class CSeq_annot_Info;class CSeq_annot_SNP_Info;class CTSE_Chunk_Info;class CTSE_Info_Object;class CDataSource;class CHandleRange;class CAnnotObject_Info;class CAnnotTypes_CI;class CSeq_entry;////////////////////////////////////////////////////////////////////////  CTSE_Info::////    General information and indexes for top level seq-entries//struct NCBI_XOBJMGR_EXPORT SIdAnnotObjs{    SIdAnnotObjs(void);    ~SIdAnnotObjs(void);    SIdAnnotObjs(const SIdAnnotObjs& objs);        typedef CRange<TSeqPos>                                  TRange;    typedef CRangeMultimap<SAnnotObject_Index, TSeqPos>      TRangeMap;    typedef vector<TRangeMap>                                TAnnotSet;    typedef vector<CConstRef<CSeq_annot_SNP_Info> >          TSNPSet;    TAnnotSet m_AnnotSet;    TSNPSet   m_SNPSet;private:    const SIdAnnotObjs& operator=(const SIdAnnotObjs& objs);};class NCBI_XOBJMGR_EXPORT CTSE_Info : public CSeq_entry_Info{    typedef CSeq_entry_Info TParent;public:    // 'ctors    // Argument tse will be parentized.    explicit CTSE_Info(CSeq_entry& tse,                       bool dead = false,                       const CObject* blob_id = 0);    explicit CTSE_Info(const CTSE_Info& info);    virtual ~CTSE_Info(void);    bool HasDataSource(void) const;    CDataSource& GetDataSource(void) const;    CConstRef<CSeq_entry> GetCompleteTSE(void) const;    CConstRef<CSeq_entry> GetTSECore(void) const;    const CTSE_Info& GetTSE_Info(void) const;    CTSE_Info& GetTSE_Info(void);    bool IsDead(void) const;    void SetDead(bool dead);    bool Locked(void) const;    const CAnnotName& GetName(void) const;    void SetName(const CAnnotName& name);    bool HasAnnot(const CAnnotName& name) const;    bool HasUnnamedAnnot(void) const;    bool HasNamedAnnot(const string& name) const;    const CConstRef<CObject>& GetBlobId(void) const;    void SetBlobId(const CObject* blob_id);    // indexes types    typedef map<int, CBioseq_set_Info*>                      TBioseq_sets;    typedef map<CSeq_id_Handle, CBioseq_Info*>               TBioseqs;    typedef SIdAnnotObjs::TRange                             TRange;    typedef SIdAnnotObjs::TRangeMap                          TRangeMap;    typedef SIdAnnotObjs::TAnnotSet                          TAnnotSet;    typedef SIdAnnotObjs::TSNPSet                            TSNPSet;    typedef map<CSeq_id_Handle, SIdAnnotObjs>                TAnnotObjs;    typedef map<CAnnotName, TAnnotObjs>                      TNamedAnnotObjs;    typedef set<CAnnotName>                                  TNames;    typedef map<CSeq_id_Handle, TNames>                      TSeqIdToNames;    typedef int                                              TChunkId;    typedef map<TChunkId, CRef<CTSE_Chunk_Info> >            TChunks;    bool ContainsSeqid(const CSeq_id_Handle& id) const;    CConstRef<CBioseq_Info> FindBioseq(const CSeq_id_Handle& key) const;    void UpdateAnnotIndex(void) const;    void UpdateAnnotIndex(const CTSE_Info_Object& object) const;    void UpdateAnnotIndex(void);    void UpdateAnnotIndex(CTSE_Info_Object& object);    virtual void DebugDump(CDebugDumpContext ddc, unsigned int depth) const;    void x_DSAttachContents(CDataSource& ds);    void x_DSDetachContents(CDataSource& ds);        virtual void x_SetDirtyAnnotIndexNoParent(void);    virtual void x_ResetDirtyAnnotIndexNoParent(void);    CRef<CTSE_Chunk_Info> GetNotLoadedChunk(void);    void LoadAllChunks(void);private:    friend class CTSE_Guard;    friend class CDataSource;    friend class CScope_Impl;    friend class CDataLoader;    friend class CAnnot_Collector;    friend class CSeq_entry_Info;    friend class CSeq_annot_Info;    friend class CBioseq_Info;    friend class CBioseq_set_Info;    friend class CTSE_Chunk_Info;    friend class CSeq_annot_SNP_Info;    friend struct SAnnotSelector;    CBioseq_set_Info& GetBioseq_set(int id);    CBioseq_Info& GetBioseq(int gi);        void x_DSMapObject(CConstRef<TObject> obj, CDataSource& ds);    void x_DSUnmapObject(CConstRef<TObject> obj, CDataSource& ds);    void x_SetBioseqId(const CSeq_id_Handle& key, CBioseq_Info* info);    void x_ResetBioseqId(const CSeq_id_Handle& key, CBioseq_Info* info);    void x_SetBioseq_setId(int key, CBioseq_set_Info* info);    void x_ResetBioseq_setId(int key, CBioseq_set_Info* info);    // index access methods    TAnnotObjs& x_SetAnnotObjs(const CAnnotName& name);    const TAnnotObjs* x_GetAnnotObjs(const CAnnotName& name) const;    const TAnnotObjs* x_GetUnnamedAnnotObjs(void) const;    void x_RemoveAnnotObjs(const CAnnotName& name);    const SIdAnnotObjs* x_GetIdObjects(const TAnnotObjs& objs,                                       const CSeq_id_Handle& idh) const;    const SIdAnnotObjs* x_GetIdObjects(const CAnnotName& name,                                       const CSeq_id_Handle& id) const;    const SIdAnnotObjs* x_GetUnnamedIdObjects(const CSeq_id_Handle& id) const;    SIdAnnotObjs& x_SetIdObjects(TAnnotObjs& objs,                                 const CAnnotName& name,                                 const CSeq_id_Handle& id);    SIdAnnotObjs& x_SetIdObjects(const CAnnotName& name,                                 const CSeq_id_Handle& idh);    void x_MapSNP_Table(const CAnnotName& name,                        const CSeq_id_Handle& key,                        const CSeq_annot_SNP_Info& snp_info);    void x_UnmapSNP_Table(const CAnnotName& name,                          const CSeq_id_Handle& key,                          const CSeq_annot_SNP_Info& snp_info);    void x_MapAnnotObject(TRangeMap& rangeMap,                          const SAnnotObject_Key& key,                          const SAnnotObject_Index& annotRef);    bool x_UnmapAnnotObject(TRangeMap& rangeMap,                            const SAnnotObject_Key& key);    void x_MapAnnotObject(SIdAnnotObjs& objs,                          const SAnnotObject_Key& key,                          const SAnnotObject_Index& annotRef);    bool x_UnmapAnnotObject(SIdAnnotObjs& objs,                            const SAnnotObject_Key& key);    void x_MapAnnotObject(TAnnotObjs& objs,                          const CAnnotName& name,                          const SAnnotObject_Key& key,                          const SAnnotObject_Index& annotRef);    void x_MapAnnotObject(TAnnotObjs& index,                          const SAnnotObject_Key& key,                          const SAnnotObject_Index& annotRef,                          SAnnotObjects_Info& infos);    void x_MapAnnotObject(const SAnnotObject_Key& key,                          const SAnnotObject_Index& annotRef,                          SAnnotObjects_Info& infos);    bool x_UnmapAnnotObject(TAnnotObjs& objs,                            const CAnnotName& name,                            const SAnnotObject_Key& key);    void x_UnmapAnnotObjects(SAnnotObjects_Info& infos);    void x_IndexSeqTSE(const CSeq_id_Handle& id);    void x_UnindexSeqTSE(const CSeq_id_Handle& id);    void x_IndexAnnotTSE(const CAnnotName& name, const CSeq_id_Handle& id);    void x_UnindexAnnotTSE(const CAnnotName& name, const CSeq_id_Handle& id);    // Parent data-source    CDataSource*           m_DataSource;    // Dead seq-entry flag    bool                   m_Dead;    // TSE has name    CAnnotName             m_Name;    // May be used by data loaders to store blob-id    typedef CConstRef<CObject> TBlob_ID;    TBlob_ID               m_Blob_ID;    typedef CRWLock        TAnnotObjsLock;    typedef TAnnotObjsLock::TReadLockGuard  TAnnotReadLockGuard;    typedef TAnnotObjsLock::TWriteLockGuard TAnnotWriteLockGuard;    // ID to bioseq-info    TBioseq_sets           m_Bioseq_sets;    TBioseqs               m_Bioseqs;    // ID to annot-selector-map    TNamedAnnotObjs        m_NamedAnnotObjs;    TSeqIdToNames          m_SeqIdToNames;    mutable TAnnotObjsLock m_AnnotObjsLock;    TChunks                m_Chunks;    // Hide copy methods    CTSE_Info& operator= (const CTSE_Info&);};typedef CConstRef<CTSE_Info> TTSE_Lock;/////////////////////////////////////////////////////////////////////////  Inline methods///////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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