tse_info_object.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:8k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: tse_info_object.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 17:33:09  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJECTS_OBJMGR_IMPL___TSE_INFO_OBJECT__HPP
  10. #define OBJECTS_OBJMGR_IMPL___TSE_INFO_OBJECT__HPP
  11. /*  $Id: tse_info_object.hpp,v 1000.0 2004/04/12 17:33:09 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author: Aleksey Grichenko, Eugene Vasilchenko
  37.  *
  38.  * File Description:
  39.  *   Bioseq info for data source
  40.  *
  41.  */
  42. #include <corelib/ncbiobj.hpp>
  43. BEGIN_NCBI_SCOPE
  44. BEGIN_SCOPE(objects)
  45. class CDataSource;
  46. class CTSE_Info;
  47. class CSeq_entry;
  48. class CSeq_entry_Info;
  49. class CSeq_annot;
  50. class CSeq_annot_Info;
  51. class CSeq_descr;
  52. ////////////////////////////////////////////////////////////////////
  53. //
  54. //  CTSE_Info_Object::
  55. //
  56. //    Structure to keep bioseq's parent seq-entry along with the list
  57. //    of seq-id synonyms for the bioseq.
  58. //
  59. class NCBI_XOBJMGR_EXPORT CTSE_Info_Object : public CObject
  60. {
  61. public:
  62.     // 'ctors
  63.     CTSE_Info_Object(void);
  64.     virtual ~CTSE_Info_Object(void);
  65.     // info tree
  66.     bool HasDataSource(void) const;
  67.     CDataSource& GetDataSource(void) const;
  68.     bool HasTSE_Info(void) const;
  69.     const CTSE_Info& GetTSE_Info(void) const;
  70.     CTSE_Info& GetTSE_Info(void);
  71.     bool HasParent_Info(void) const;
  72.     const CTSE_Info_Object& GetBaseParent_Info(void) const;
  73.     CTSE_Info_Object& GetBaseParent_Info(void);
  74.     // info tree initialization
  75.     void x_DSAttach(CDataSource& ds);
  76.     void x_DSDetach(CDataSource& ds);
  77.     virtual void x_DSAttachContents(CDataSource& ds);
  78.     virtual void x_DSDetachContents(CDataSource& ds);
  79.     void x_TSEAttach(CTSE_Info& tse);
  80.     void x_TSEDetach(CTSE_Info& tse);
  81.     virtual void x_TSEAttachContents(CTSE_Info& tse);
  82.     virtual void x_TSEDetachContents(CTSE_Info& tse);
  83.     // index support
  84.     bool x_DirtyAnnotIndex(void) const;
  85.     void x_SetDirtyAnnotIndex(void);
  86.     void x_SetParentDirtyAnnotIndex(void);
  87.     void x_ResetDirtyAnnotIndex(void);
  88.     virtual void x_SetDirtyAnnotIndexNoParent(void);
  89.     virtual void x_ResetDirtyAnnotIndexNoParent(void);
  90.     void x_UpdateAnnotIndex(CTSE_Info& tse);
  91.     virtual void x_UpdateAnnotIndexContents(CTSE_Info& tse);
  92.     bool x_NeedUpdateObject(void) const;
  93.     void x_SetNeedUpdateObject(void);
  94.     void x_ResetNeedUpdateObject(void);
  95.     void x_UpdateObject(void) const;
  96.     virtual void x_DoUpdateObject(void);
  97. protected:
  98.     void x_BaseParentAttach(CTSE_Info_Object& parent);
  99.     void x_BaseParentDetach(CTSE_Info_Object& parent);
  100.     void x_AttachObject(CTSE_Info_Object& object);
  101.     void x_DetachObject(CTSE_Info_Object& object);
  102. private:
  103.     CTSE_Info_Object(const CTSE_Info_Object&);
  104.     CTSE_Info_Object& operator=(const CTSE_Info_Object&);
  105.     // Owner TSE info
  106.     CTSE_Info*              m_TSE_Info;
  107.     CTSE_Info_Object*       m_Parent_Info;
  108.     bool                    m_DirtyAnnotIndex;
  109.     bool                    m_NeedUpdateObject;
  110. };
  111. /////////////////////////////////////////////////////////////////////
  112. //
  113. //  Inline methods
  114. //
  115. /////////////////////////////////////////////////////////////////////
  116. inline
  117. bool CTSE_Info_Object::HasTSE_Info(void) const
  118. {
  119.     return m_TSE_Info != 0;
  120. }
  121. inline
  122. bool CTSE_Info_Object::HasParent_Info(void) const
  123. {
  124.     return m_Parent_Info != 0;
  125. }
  126. inline
  127. bool CTSE_Info_Object::x_DirtyAnnotIndex(void) const
  128. {
  129.     return m_DirtyAnnotIndex;
  130. }
  131. inline
  132. bool CTSE_Info_Object::x_NeedUpdateObject(void) const
  133. {
  134.     return m_NeedUpdateObject;
  135. }
  136. END_SCOPE(objects)
  137. END_NCBI_SCOPE
  138. /*
  139.  * ---------------------------------------------------------------------------
  140.  * $Log: tse_info_object.hpp,v $
  141.  * Revision 1000.0  2004/04/12 17:33:09  gouriano
  142.  * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  143.  *
  144.  * Revision 1.2  2004/03/24 18:30:29  vasilche
  145.  * Fixed edit API.
  146.  * Every *_Info object has its own shallow copy of original object.
  147.  *
  148.  * Revision 1.1  2004/03/16 15:47:27  vasilche
  149.  * Added CBioseq_set_Handle and set of EditHandles
  150.  *
  151.  * Revision 1.15  2003/11/28 15:13:25  grichenk
  152.  * Added CSeq_entry_Handle
  153.  *
  154.  * Revision 1.14  2003/09/30 16:22:00  vasilche
  155.  * Updated internal object manager classes to be able to load ID2 data.
  156.  * SNP blobs are loaded as ID2 split blobs - readers convert them automatically.
  157.  * Scope caches results of requests for data to data loaders.
  158.  * Optimized CSeq_id_Handle for gis.
  159.  * Optimized bioseq lookup in scope.
  160.  * Reduced object allocations in annotation iterators.
  161.  * CScope is allowed to be destroyed before other objects using this scope are
  162.  * deleted (feature iterators, bioseq handles etc).
  163.  * Optimized lookup for matching Seq-ids in CSeq_id_Mapper.
  164.  * Added 'adaptive' option to objmgr_demo application.
  165.  *
  166.  * Revision 1.13  2003/06/02 16:01:37  dicuccio
  167.  * Rearranged include/objects/ subtree.  This includes the following shifts:
  168.  *     - include/objects/alnmgr --> include/objtools/alnmgr
  169.  *     - include/objects/cddalignview --> include/objtools/cddalignview
  170.  *     - include/objects/flat --> include/objtools/flat
  171.  *     - include/objects/objmgr/ --> include/objmgr/
  172.  *     - include/objects/util/ --> include/objmgr/util/
  173.  *     - include/objects/validator --> include/objtools/validator
  174.  *
  175.  * Revision 1.12  2003/04/29 19:51:12  vasilche
  176.  * Fixed interaction of Data Loader garbage collector and TSE locking mechanism.
  177.  * Made some typedefs more consistent.
  178.  *
  179.  * Revision 1.11  2003/04/25 14:23:46  vasilche
  180.  * Added explicit constructors, destructor and assignment operator to make it compilable on MSVC DLL.
  181.  *
  182.  * Revision 1.10  2003/04/24 16:12:37  vasilche
  183.  * Object manager internal structures are splitted more straightforward.
  184.  * Removed excessive header dependencies.
  185.  *
  186.  * Revision 1.9  2003/04/14 21:31:05  grichenk
  187.  * Removed operators ==(), !=() and <()
  188.  *
  189.  * Revision 1.8  2003/03/12 20:09:31  grichenk
  190.  * Redistributed members between CBioseq_Handle, CBioseq_Info and CTSE_Info
  191.  *
  192.  * Revision 1.7  2003/02/05 17:57:41  dicuccio
  193.  * Moved into include/objects/objmgr/impl to permit data loaders to be defined
  194.  * outside of xobjmgr.
  195.  *
  196.  * Revision 1.6  2002/12/26 21:03:33  dicuccio
  197.  * Added Win32 export specifier.  Moved file from src/objects/objmgr to
  198.  * include/objects/objmgr.
  199.  *
  200.  * Revision 1.5  2002/07/08 20:51:01  grichenk
  201.  * Moved log to the end of file
  202.  * Replaced static mutex (in CScope, CDataSource) with the mutex
  203.  * pool. Redesigned CDataSource data locking.
  204.  *
  205.  * Revision 1.4  2002/05/29 21:21:13  gouriano
  206.  * added debug dump
  207.  *
  208.  * Revision 1.3  2002/05/06 03:28:46  vakatov
  209.  * OM/OM1 renaming
  210.  *
  211.  * Revision 1.2  2002/02/21 19:27:05  grichenk
  212.  * Rearranged includes. Added scope history. Added searching for the
  213.  * best seq-id match in data sources and scopes. Updated tests.
  214.  *
  215.  * Revision 1.1  2002/02/07 21:25:05  grichenk
  216.  * Initial revision
  217.  *
  218.  *
  219.  * ===========================================================================
  220.  */
  221. #endif//OBJECTS_OBJMGR_IMPL___TSE_INFO_OBJECT__HPP