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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: bioseq_set_handle.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:23:00  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: bioseq_set_handle.cpp,v 1000.1 2004/06/01 19:23:00 gouriano Exp $
  10. * ===========================================================================
  11. *
  12. *                            PUBLIC DOMAIN NOTICE
  13. *               National Center for Biotechnology Information
  14. *
  15. *  This software/database is a "United States Government Work" under the
  16. *  terms of the United States Copyright Act.  It was written as part of
  17. *  the author's official duties as a United States Government employee and
  18. *  thus cannot be copyrighted.  This software/database is freely available
  19. *  to the public for use. The National Library of Medicine and the U.S.
  20. *  Government have not placed any restriction on its use or reproduction.
  21. *
  22. *  Although all reasonable efforts have been taken to ensure the accuracy
  23. *  and reliability of the software and data, the NLM and the U.S.
  24. *  Government do not and cannot warrant the performance or results that
  25. *  may be obtained by using this software or data. The NLM and the U.S.
  26. *  Government disclaim all warranties, express or implied, including
  27. *  warranties of performance, merchantability or fitness for any particular
  28. *  purpose.
  29. *
  30. *  Please cite the author in any work or product based on this material.
  31. *
  32. * ===========================================================================
  33. *
  34. * Author: Aleksey Grichenko, Eugene Vasilchenko
  35. *
  36. * File Description:
  37. *    Handle to Seq-entry object
  38. *
  39. */
  40. #include <ncbi_pch.hpp>
  41. #include <objmgr/bioseq_set_handle.hpp>
  42. #include <objmgr/scope.hpp>
  43. #include <objmgr/impl/scope_impl.hpp>
  44. #include <objmgr/impl/bioseq_set_info.hpp>
  45. #include <objects/seqset/Bioseq_set.hpp>
  46. #include <objects/seqset/Seq_entry.hpp>
  47. BEGIN_NCBI_SCOPE
  48. BEGIN_SCOPE(objects)
  49. CBioseq_set_Handle::CBioseq_set_Handle(CScope& scope,
  50.                                        const CBioseq_set_Info& info)
  51.     : m_Scope(&scope), m_Info(&info)
  52. {
  53. }
  54. CConstRef<CBioseq_set> CBioseq_set_Handle::GetCompleteBioseq_set(void) const
  55. {
  56.     return x_GetInfo().GetCompleteBioseq_set();
  57. }
  58. CConstRef<CBioseq_set> CBioseq_set_Handle::GetBioseq_setCore(void) const
  59. {
  60.     return x_GetInfo().GetBioseq_setCore();
  61. }
  62. CSeq_entry_Handle CBioseq_set_Handle::GetParentEntry(void) const
  63. {
  64.     CSeq_entry_Handle ret;
  65.     const CBioseq_set_Info& info = x_GetInfo();
  66.     if ( info.HasParent_Info() ) {
  67.         ret = CSeq_entry_Handle(GetScope(), info.GetParentSeq_entry_Info());
  68.     }
  69.     return ret;
  70. }
  71. CSeq_entry_Handle CBioseq_set_Handle::GetTopLevelEntry(void) const
  72. {
  73.     CSeq_entry_Handle ret;
  74.     const CBioseq_set_Info& info = x_GetInfo();
  75.     if ( info.HasTSE_Info() ) {
  76.         ret = CSeq_entry_Handle(GetScope(), info.GetTSE_Info());
  77.     }
  78.     return ret;
  79. }
  80. CBioseq_set_EditHandle CBioseq_set_Handle::GetEditHandle(void) const
  81. {
  82.     return m_Scope->GetEditHandle(*this);
  83. }
  84. bool CBioseq_set_Handle::IsSetId(void) const
  85. {
  86.     return x_GetInfo().IsSetId();
  87. }
  88. bool CBioseq_set_Handle::CanGetId(void) const
  89. {
  90.     return bool(m_Info)  &&  x_GetInfo().CanGetId();
  91. }
  92. const CBioseq_set::TId& CBioseq_set_Handle::GetId(void) const
  93. {
  94.     return x_GetInfo().GetId();
  95. }
  96. bool CBioseq_set_Handle::IsSetColl(void) const
  97. {
  98.     return x_GetInfo().IsSetColl();
  99. }
  100. bool CBioseq_set_Handle::CanGetColl(void) const
  101. {
  102.     return bool(m_Info)  &&  x_GetInfo().CanGetColl();
  103. }
  104. const CBioseq_set::TColl& CBioseq_set_Handle::GetColl(void) const
  105. {
  106.     return x_GetInfo().GetColl();
  107. }
  108. bool CBioseq_set_Handle::IsSetLevel(void) const
  109. {
  110.     return x_GetInfo().IsSetLevel();
  111. }
  112. bool CBioseq_set_Handle::CanGetLevel(void) const
  113. {
  114.     return bool(m_Info)  &&  x_GetInfo().CanGetLevel();
  115. }
  116. CBioseq_set::TLevel CBioseq_set_Handle::GetLevel(void) const
  117. {
  118.     return x_GetInfo().GetLevel();
  119. }
  120. bool CBioseq_set_Handle::IsSetClass(void) const
  121. {
  122.     return x_GetInfo().IsSetClass();
  123. }
  124. bool CBioseq_set_Handle::CanGetClass(void) const
  125. {
  126.     return bool(m_Info)  &&  x_GetInfo().CanGetClass();
  127. }
  128. CBioseq_set::TClass CBioseq_set_Handle::GetClass(void) const
  129. {
  130.     return x_GetInfo().GetClass();
  131. }
  132. bool CBioseq_set_Handle::IsSetRelease(void) const
  133. {
  134.     return x_GetInfo().IsSetRelease();
  135. }
  136. bool CBioseq_set_Handle::CanGetRelease(void) const
  137. {
  138.     return bool(m_Info)  &&  x_GetInfo().CanGetRelease();
  139. }
  140. const CBioseq_set::TRelease& CBioseq_set_Handle::GetRelease(void) const
  141. {
  142.     return x_GetInfo().GetRelease();
  143. }
  144. bool CBioseq_set_Handle::IsSetDate(void) const
  145. {
  146.     return x_GetInfo().IsSetDate();
  147. }
  148. bool CBioseq_set_Handle::CanGetDate(void) const
  149. {
  150.     return bool(m_Info)  &&  x_GetInfo().CanGetDate();
  151. }
  152. const CBioseq_set::TDate& CBioseq_set_Handle::GetDate(void) const
  153. {
  154.     return x_GetInfo().GetDate();
  155. }
  156. bool CBioseq_set_Handle::IsSetDescr(void) const
  157. {
  158.     return x_GetInfo().IsSetDescr();
  159. }
  160. bool CBioseq_set_Handle::CanGetDescr(void) const
  161. {
  162.     return bool(m_Info)  &&  x_GetInfo().CanGetDescr();
  163. }
  164. const CBioseq_set::TDescr& CBioseq_set_Handle::GetDescr(void) const
  165. {
  166.     return x_GetInfo().GetDescr();
  167. }
  168. /////////////////////////////////////////////////////////////////////////////
  169. // CBioseq_set_EditHandle
  170. CSeq_entry_EditHandle CBioseq_set_EditHandle::GetParentEntry(void) const
  171. {
  172.     CSeq_entry_EditHandle ret;
  173.     CBioseq_set_Info& info = x_GetInfo();
  174.     if ( info.HasParent_Info() ) {
  175.         ret = CSeq_entry_EditHandle(GetScope(),
  176.                                     info.GetParentSeq_entry_Info());
  177.     }
  178.     return ret;
  179. }
  180. void CBioseq_set_EditHandle::ResetId(void) const
  181. {
  182.     x_GetInfo().ResetId();
  183. }
  184. void CBioseq_set_EditHandle::SetId(TId& v) const
  185. {
  186.     x_GetInfo().SetId(v);
  187. }
  188. void CBioseq_set_EditHandle::ResetColl(void) const
  189. {
  190.     x_GetInfo().ResetColl();
  191. }
  192. void CBioseq_set_EditHandle::SetColl(TColl& v) const
  193. {
  194.     x_GetInfo().SetColl(v);
  195. }
  196. void CBioseq_set_EditHandle::ResetLevel(void) const
  197. {
  198.     x_GetInfo().ResetLevel();
  199. }
  200. void CBioseq_set_EditHandle::SetLevel(TLevel v) const
  201. {
  202.     x_GetInfo().SetLevel(v);
  203. }
  204. void CBioseq_set_EditHandle::ResetClass(void) const
  205. {
  206.     x_GetInfo().ResetClass();
  207. }
  208. void CBioseq_set_EditHandle::SetClass(TClass v) const
  209. {
  210.     x_GetInfo().SetClass(v);
  211. }
  212. void CBioseq_set_EditHandle::ResetRelease(void) const
  213. {
  214.     x_GetInfo().ResetRelease();
  215. }
  216. void CBioseq_set_EditHandle::SetRelease(TRelease& v) const
  217. {
  218.     x_GetInfo().SetRelease(v);
  219. }
  220. void CBioseq_set_EditHandle::ResetDate(void) const
  221. {
  222.     x_GetInfo().ResetDate();
  223. }
  224. void CBioseq_set_EditHandle::SetDate(TDate& v) const
  225. {
  226.     x_GetInfo().SetDate(v);
  227. }
  228. void CBioseq_set_EditHandle::ResetDescr(void) const
  229. {
  230.     x_GetInfo().ResetDescr();
  231. }
  232. void CBioseq_set_EditHandle::SetDescr(TDescr& v) const
  233. {
  234.     x_GetInfo().SetDescr(v);
  235. }
  236. CSeq_entry_EditHandle CBioseq_set_EditHandle::AddNewEntry(int index) const
  237. {
  238.     return AttachEntry(*new CSeq_entry, index);
  239. }
  240. CBioseq_EditHandle
  241. CBioseq_set_EditHandle::AttachBioseq(CBioseq& seq, int index) const
  242. {
  243.     return AddNewEntry(index).SelectSeq(seq);
  244. }
  245. CBioseq_EditHandle
  246. CBioseq_set_EditHandle::CopyBioseq(const CBioseq_Handle& seq, int index) const
  247. {
  248.     return AddNewEntry(index).CopySeq(seq);
  249. }
  250. CBioseq_EditHandle
  251. CBioseq_set_EditHandle::TakeBioseq(const CBioseq_EditHandle& seq, int index) const
  252. {
  253.     return AddNewEntry(index).TakeSeq(seq);
  254. }
  255. CSeq_entry_EditHandle
  256. CBioseq_set_EditHandle::AttachEntry(CSeq_entry& entry, int index) const
  257. {
  258.     return m_Scope->AttachEntry(*this, entry, index);
  259. }
  260. CSeq_entry_EditHandle
  261. CBioseq_set_EditHandle::CopyEntry(const CSeq_entry_Handle& entry,
  262.                                   int index) const
  263. {
  264.     return m_Scope->CopyEntry(*this, entry, index);
  265. }
  266. CSeq_entry_EditHandle
  267. CBioseq_set_EditHandle::TakeEntry(const CSeq_entry_EditHandle& entry,
  268.                                   int index) const
  269. {
  270.     return m_Scope->TakeEntry(*this, entry, index);
  271. }
  272. CSeq_annot_EditHandle
  273. CBioseq_set_EditHandle::AttachAnnot(const CSeq_annot& annot) const
  274. {
  275.     return GetParentEntry().AttachAnnot(annot);
  276. }
  277. CSeq_annot_EditHandle
  278. CBioseq_set_EditHandle::CopyAnnot(const CSeq_annot_Handle& annot) const
  279. {
  280.     return GetParentEntry().CopyAnnot(annot);
  281. }
  282. CSeq_annot_EditHandle
  283. CBioseq_set_EditHandle::TakeAnnot(const CSeq_annot_EditHandle& annot) const
  284. {
  285.     return GetParentEntry().TakeAnnot(annot);
  286. }
  287. void CBioseq_set_EditHandle::Remove(void) const
  288. {
  289.     m_Scope->RemoveBioseq_set(*this);
  290. }
  291. END_SCOPE(objects)
  292. END_NCBI_SCOPE
  293. /*
  294. * ---------------------------------------------------------------------------
  295. * $Log: bioseq_set_handle.cpp,v $
  296. * Revision 1000.1  2004/06/01 19:23:00  gouriano
  297. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  298. *
  299. * Revision 1.9  2004/05/21 21:42:12  gorelenk
  300. * Added PCH ncbi_pch.hpp
  301. *
  302. * Revision 1.8  2004/05/06 17:32:37  grichenk
  303. * Added CanGetXXXX() methods
  304. *
  305. * Revision 1.7  2004/04/29 15:44:30  grichenk
  306. * Added GetTopLevelEntry()
  307. *
  308. * Revision 1.6  2004/03/31 19:54:08  vasilche
  309. * Fixed removal of bioseqs and bioseq-sets.
  310. *
  311. * Revision 1.5  2004/03/31 17:08:07  vasilche
  312. * Implemented ConvertSeqToSet and ConvertSetToSeq.
  313. *
  314. * Revision 1.4  2004/03/29 20:13:06  vasilche
  315. * Implemented whole set of methods to modify Seq-entry object tree.
  316. * Added CBioseq_Handle::GetExactComplexityLevel().
  317. *
  318. * Revision 1.3  2004/03/24 18:30:29  vasilche
  319. * Fixed edit API.
  320. * Every *_Info object has its own shallow copy of original object.
  321. *
  322. * Revision 1.2  2004/03/16 21:01:32  vasilche
  323. * Added methods to move Bioseq withing Seq-entry
  324. *
  325. * Revision 1.1  2004/03/16 15:47:27  vasilche
  326. * Added CBioseq_set_Handle and set of EditHandles
  327. *
  328. * Revision 1.3  2004/02/09 22:09:14  grichenk
  329. * Use CConstRef for id
  330. *
  331. * Revision 1.2  2004/02/09 19:18:54  grichenk
  332. * Renamed CDesc_CI to CSeq_descr_CI. Redesigned CSeq_descr_CI
  333. * and CSeqdesc_CI to avoid using data directly.
  334. *
  335. * Revision 1.1  2003/11/28 15:12:31  grichenk
  336. * Initial revision
  337. *
  338. *
  339. * ===========================================================================
  340. */