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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: seq_entry_ci.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 17:32:24  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJMGR__SEQ_ENTRY_CI__HPP
  10. #define OBJMGR__SEQ_ENTRY_CI__HPP
  11. /*  $Id: seq_entry_ci.hpp,v 1000.0 2004/04/12 17:32:24 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. *    Handle to Seq-entry object
  40. *
  41. */
  42. #include <corelib/ncbistd.hpp>
  43. #include <objmgr/bioseq_set_handle.hpp>
  44. #include <objmgr/seq_entry_handle.hpp>
  45. #include <vector>
  46. BEGIN_NCBI_SCOPE
  47. BEGIN_SCOPE(objects)
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CSeq_entry_Handle
  50. /////////////////////////////////////////////////////////////////////////////
  51. class CSeq_entry_Handle;
  52. class CSeq_entry_EditHandle;
  53. class CBioseq_set_Handle;
  54. class CBioseq_set_EditHandle;
  55. class CSeq_entry_CI;
  56. class CSeq_entry_I;
  57. class NCBI_XOBJMGR_EXPORT CSeq_entry_CI
  58. {
  59. public:
  60.     CSeq_entry_CI(void);
  61.     CSeq_entry_CI(const CSeq_entry_Handle& entry);
  62.     CSeq_entry_CI(const CBioseq_set_Handle& set);
  63.     operator bool(void) const;
  64.     bool operator ==(const CSeq_entry_CI& iter) const;
  65.     bool operator !=(const CSeq_entry_CI& iter) const;
  66.     CSeq_entry_CI& operator ++(void);
  67.     const CSeq_entry_Handle& operator*(void) const;
  68.     const CSeq_entry_Handle* operator->(void) const;
  69. private:
  70.     typedef vector< CRef<CSeq_entry_Info> > TSeq_set;
  71.     typedef TSeq_set::const_iterator  TIterator;
  72.     void x_Initialize(const CBioseq_set_Handle& set);
  73.     void x_SetCurrentEntry(void);
  74.     friend class CBioseq_set_Handle;
  75.     CSeq_entry_CI& operator ++(int);
  76.     CBioseq_set_Handle  m_Parent;
  77.     TIterator           m_Iterator;
  78.     CSeq_entry_Handle   m_Current;
  79. };
  80. class NCBI_XOBJMGR_EXPORT CSeq_entry_I
  81. {
  82. public:
  83.     CSeq_entry_I(void);
  84.     CSeq_entry_I(const CSeq_entry_EditHandle& entry);
  85.     CSeq_entry_I(const CBioseq_set_EditHandle& set);
  86.     operator bool(void) const;
  87.     bool operator ==(const CSeq_entry_I& iter) const;
  88.     bool operator !=(const CSeq_entry_I& iter) const;
  89.     CSeq_entry_I& operator ++(void);
  90.     const CSeq_entry_EditHandle& operator*(void) const;
  91.     const CSeq_entry_EditHandle* operator->(void) const;
  92. private:
  93.     typedef vector< CRef<CSeq_entry_Info> > TSeq_set;
  94.     typedef TSeq_set::iterator  TIterator;
  95.     void x_Initialize(const CBioseq_set_EditHandle& set);
  96.     void x_SetCurrentEntry(void);
  97.     friend class CBioseq_set_Handle;
  98.     CSeq_entry_I& operator ++(int);
  99.     CBioseq_set_EditHandle  m_Parent;
  100.     TIterator               m_Iterator;
  101.     CSeq_entry_EditHandle   m_Current;
  102. };
  103. /////////////////////////////////////////////////////////////////////////////
  104. // CSeq_entry_CI inline methods
  105. /////////////////////////////////////////////////////////////////////////////
  106. inline
  107. CSeq_entry_CI::CSeq_entry_CI(void)
  108. {
  109. }
  110. inline
  111. CSeq_entry_CI::operator bool(void) const
  112. {
  113.     return m_Current;
  114. }
  115. inline
  116. bool CSeq_entry_CI::operator ==(const CSeq_entry_CI& iter) const
  117. {
  118.     return m_Current == iter.m_Current;
  119. }
  120. inline
  121. bool CSeq_entry_CI::operator !=(const CSeq_entry_CI& iter) const
  122. {
  123.     return m_Current != iter.m_Current;
  124. }
  125. inline
  126. const CSeq_entry_Handle& CSeq_entry_CI::operator*(void) const
  127. {
  128.     return m_Current;
  129. }
  130. inline
  131. const CSeq_entry_Handle* CSeq_entry_CI::operator->(void) const
  132. {
  133.     return &m_Current;
  134. }
  135. /////////////////////////////////////////////////////////////////////////////
  136. // CSeq_entry_I inline methods
  137. /////////////////////////////////////////////////////////////////////////////
  138. inline
  139. CSeq_entry_I::CSeq_entry_I(void)
  140. {
  141. }
  142. inline
  143. CSeq_entry_I::operator bool(void) const
  144. {
  145.     return m_Current;
  146. }
  147. inline
  148. bool CSeq_entry_I::operator ==(const CSeq_entry_I& iter) const
  149. {
  150.     return m_Current == iter.m_Current;
  151. }
  152. inline
  153. bool CSeq_entry_I::operator !=(const CSeq_entry_I& iter) const
  154. {
  155.     return m_Current != iter.m_Current;
  156. }
  157. inline
  158. const CSeq_entry_EditHandle& CSeq_entry_I::operator*(void) const
  159. {
  160.     return m_Current;
  161. }
  162. inline
  163. const CSeq_entry_EditHandle* CSeq_entry_I::operator->(void) const
  164. {
  165.     return &m_Current;
  166. }
  167. END_SCOPE(objects)
  168. END_NCBI_SCOPE
  169. /*
  170. * ---------------------------------------------------------------------------
  171. * $Log: seq_entry_ci.hpp,v $
  172. * Revision 1000.0  2004/04/12 17:32:24  gouriano
  173. * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  174. *
  175. * Revision 1.2  2004/03/31 17:08:06  vasilche
  176. * Implemented ConvertSeqToSet and ConvertSetToSeq.
  177. *
  178. * Revision 1.1  2004/03/16 15:47:26  vasilche
  179. * Added CBioseq_set_Handle and set of EditHandles
  180. *
  181. * Revision 1.3  2004/02/09 19:18:50  grichenk
  182. * Renamed CDesc_CI to CSeq_descr_CI. Redesigned CSeq_descr_CI
  183. * and CSeqdesc_CI to avoid using data directly.
  184. *
  185. * Revision 1.2  2003/12/03 16:40:03  grichenk
  186. * Added GetParentEntry()
  187. *
  188. * Revision 1.1  2003/11/28 15:12:30  grichenk
  189. * Initial revision
  190. *
  191. *
  192. * ===========================================================================
  193. */
  194. #endif//OBJMGR__SEQ_ENTRY_CI__HPP