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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: comment_item.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:39:13  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJTOOLS_FORMAT_ITEMS___COMMENT_ITEM__HPP
  10. #define OBJTOOLS_FORMAT_ITEMS___COMMENT_ITEM__HPP
  11. /*  $Id: comment_item.hpp,v 1000.1 2004/06/01 19:39:13 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:  Aaron Ucko, NCBI
  37. *          Mati Shomrat
  38. *
  39. * File Description:
  40. *   Comment item for flat-file generator
  41. *
  42. */
  43. #include <corelib/ncbistd.hpp>
  44. #include <objects/general/User_object.hpp>
  45. #include <objects/seq/Seq_hist.hpp>
  46. #include <objects/general/Dbtag.hpp>
  47. #include <objects/general/Object_id.hpp>
  48. #include <objtools/format/items/item_base.hpp>
  49. BEGIN_NCBI_SCOPE
  50. BEGIN_SCOPE(objects)
  51. class CBioseq;
  52. class CSeqdesc;
  53. class CSeq_feat;
  54. class CBioseqContext;
  55. class IFormatter;
  56. class CMolInfo;
  57. class CBioseq_Handle;
  58. struct SModelEvidance;
  59. ///////////////////////////////////////////////////////////////////////////
  60. //
  61. // Comment
  62. class CCommentItem : public CFlatItem
  63. {
  64. public:
  65.     enum EType {
  66.         eGenomeAnnotation,
  67.         eModel,
  68.         eUser
  69.     };
  70.     enum ERefTrackStatus {
  71.         eRefTrackStatus_Unknown,
  72.         eRefTrackStatus_Inferred,
  73.         eRefTrackStatus_Provisional,
  74.         eRefTrackStatus_Predicted,
  75.         eRefTrackStatus_Validated,
  76.         eRefTrackStatus_Reviewd,
  77.         eRefTrackStatus_Model,
  78.         eRefTrackStatus_WGS
  79.     };
  80.     // typedefs
  81.     typedef EType           TType;
  82.     typedef ERefTrackStatus TRefTrackStatus;
  83.     CCommentItem(CBioseqContext& ctx);
  84.     CCommentItem(const string& comment, CBioseqContext& ctx,
  85.         const CSerialObject* obj = 0);
  86.     CCommentItem(const CSeqdesc&  desc, CBioseqContext& ctx);
  87.     //CCommentItem(const CSeq_feat& feat, CBioseqContext& ctx);
  88.     void Format(IFormatter& formatter, IFlatTextOStream& text_os) const;
  89.     bool IsFirst(void) const { return m_First; }
  90.     const string& GetComment(void) const { return m_Comment; }
  91.     void AddPeriod(void);
  92.     static const string kNsAreGaps;
  93.     static string GetStringForTPA(const CUser_object& uo, CBioseqContext& ctx);
  94.     static string GetStringForBankIt(const CUser_object& uo);
  95.     static string GetStringForRefTrack(const CUser_object& uo);
  96.     static bool NsAreGaps(const CBioseq_Handle& seq, CBioseqContext& ctx);
  97.     static string GetStringForWGS(CBioseqContext& ctx);
  98.     static string GetStringForMolinfo(const CMolInfo& mi, CBioseqContext& ctx);
  99.     static string GetStringForHTGS(CBioseqContext& ctx);
  100.     static string GetStringForModelEvidance(const SModelEvidance& me);
  101.     static TRefTrackStatus GetRefTrackStatus(const CUser_object& uo,
  102.         string* st = 0);
  103.     static void ResetFirst(void) { sm_FirstComment = true; }
  104. protected:
  105.     void x_GatherInfo(CBioseqContext& ctx);
  106.     void x_GatherDescInfo(const CSeqdesc& desc);
  107.     void x_GatherFeatInfo(const CSeq_feat& feat, CBioseqContext& ctx);
  108.     void x_SetComment(const string& comment) { m_Comment = comment; }
  109.     void x_SetCommentWithURLlinks(const string& prefix, const string& str,
  110.         const string& suffix);
  111.     string& x_GetComment(void) { return m_Comment; }
  112.     void x_SetSkip(void);
  113. private:
  114.     static bool sm_FirstComment; 
  115.     string  m_Comment;
  116.     bool    m_First;
  117. };
  118. // --- CGenomeAnnotComment
  119. class CGenomeAnnotComment : public CCommentItem
  120. {
  121. public:
  122.     CGenomeAnnotComment(CBioseqContext& ctx, const string& build_num = kEmptyStr);
  123. private:
  124.     void x_GatherInfo(CBioseqContext& ctx);
  125.     // data
  126.     string m_GenomeBuildNumber;
  127. };
  128. // --- CHistComment
  129. class CHistComment : public CCommentItem
  130. {
  131. public:
  132.     enum EType {
  133.         eReplaces,
  134.         eReplaced_by
  135.     };
  136.     CHistComment(EType type, const CSeq_hist& hist, CBioseqContext& ctx);
  137. private:
  138.     void x_GatherInfo(CBioseqContext& ctx);
  139.     // data
  140.     EType                   m_Type;
  141.     CConstRef<CSeq_hist>    m_Hist;
  142. };
  143. // --- CGsdbComment
  144. class CGsdbComment : public CCommentItem
  145. {
  146. public:
  147.     CGsdbComment(const CDbtag& dbtag, CBioseqContext& ctx);
  148. private:
  149.     void x_GatherInfo(CBioseqContext& ctx);
  150.     // data
  151.     CConstRef<CDbtag> m_Dbtag;
  152. };
  153. // --- CLocalIdComment
  154. class CLocalIdComment : public CCommentItem
  155. {
  156. public:
  157.     CLocalIdComment(const CObject_id& oid, CBioseqContext& ctx);
  158. private:
  159.     void x_GatherInfo(CBioseqContext& ctx);
  160.     // data
  161.     CConstRef<CObject_id> m_Oid;
  162. };
  163. /////////////////////////////////////////////////////////////////////////////
  164. //  inline methods
  165. inline
  166. void CCommentItem::AddPeriod(void)
  167. {
  168.     if ( !NStr::EndsWith(m_Comment, ".") ) {
  169.         m_Comment += ".";
  170.     }
  171. }
  172. END_SCOPE(objects)
  173. END_NCBI_SCOPE
  174. /*
  175. * ===========================================================================
  176. *
  177. * $Log: comment_item.hpp,v $
  178. * Revision 1000.1  2004/06/01 19:39:13  gouriano
  179. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  180. *
  181. * Revision 1.6  2004/05/06 17:40:31  shomrat
  182. * + CLocalIdComment class
  183. *
  184. * Revision 1.5  2004/04/22 15:34:25  shomrat
  185. * Changes in context
  186. *
  187. * Revision 1.4  2004/03/26 17:21:06  shomrat
  188. * + AddPeriod()
  189. *
  190. * Revision 1.3  2004/03/18 15:26:19  shomrat
  191. * Added missing forward declerations
  192. *
  193. * Revision 1.2  2004/03/05 18:48:13  shomrat
  194. * fixed RefTrack comments
  195. *
  196. * Revision 1.1  2003/12/17 19:45:14  shomrat
  197. * Initial revision (adapted from flat lib)
  198. *
  199. *
  200. * ===========================================================================
  201. */
  202. #endif  /* OBJTOOLS_FORMAT_ITEMS___COMMENT_ITEM__HPP */