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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: item_formatter.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:39:04  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJTOOLS_FORMAT___ITEM_FORMATTER_HPP
  10. #define OBJTOOLS_FORMAT___ITEM_FORMATTER_HPP
  11. /*  $Id: item_formatter.hpp,v 1000.1 2004/06/01 19:39:04 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. *           
  41. *
  42. */
  43. #include <corelib/ncbistd.hpp>
  44. #include <corelib/ncbiobj.hpp>
  45. #include <objtools/format/formatter.hpp>
  46. #include <objtools/format/context.hpp>
  47. BEGIN_NCBI_SCOPE
  48. BEGIN_SCOPE(objects)
  49. class IFlatItem;
  50. class CLocusItem;
  51. class CDeflineItem;
  52. class CAccessionItem;
  53. class CVersionItem;
  54. class CKeywordsItem;
  55. class CSegmentItem;
  56. class CSourceItem;
  57. class CReferenceItem;
  58. class CCommentItem;
  59. class CFeatHeaderItem;
  60. class CFeatureItemBase;
  61. class CBaseCountItem;
  62. class CSequenceItem;
  63. class CPrimaryItem;
  64. class CFeatHeaderItem;
  65. class CContigItem;
  66. class CWGSItem;
  67. class CGenomeItem;
  68. class CFlatTextOStream;
  69. class CDateItem;
  70. class CDBSourceItem;
  71. class COriginItem;
  72. class CFlatItemFormatter : public IFormatter
  73. {
  74. public:
  75.     
  76.     // virtual constructor
  77.     static CFlatItemFormatter* New(CFlatFileConfig::TFormat format);
  78.     
  79.     virtual ~CFlatItemFormatter(void);
  80.     // control methods
  81.     virtual void Start       (IFlatTextOStream&) {}
  82.     virtual void StartSection(const CStartSectionItem&, IFlatTextOStream& text_os) {}
  83.     virtual void EndSection  (const CEndSectionItem&, IFlatTextOStream& text_os)   {}
  84.     virtual void End         (IFlatTextOStream&) {}
  85.     // Format methods
  86.     void Format(const IFlatItem& item, IFlatTextOStream& text_os);
  87.     virtual void FormatLocus     (const CLocusItem&, IFlatTextOStream&)       {}
  88.     virtual void FormatDefline   (const CDeflineItem&, IFlatTextOStream&)     {}
  89.     virtual void FormatAccession (const CAccessionItem&, IFlatTextOStream&)   {}
  90.     virtual void FormatVersion   (const CVersionItem&, IFlatTextOStream&)     {}
  91.     virtual void FormatSegment   (const CSegmentItem&, IFlatTextOStream&)     {}
  92.     virtual void FormatKeywords  (const CKeywordsItem&, IFlatTextOStream&)    {}
  93.     virtual void FormatSource    (const CSourceItem&, IFlatTextOStream&)      {}
  94.     virtual void FormatReference (const CReferenceItem&, IFlatTextOStream&)   {}
  95.     virtual void FormatComment   (const CCommentItem&, IFlatTextOStream&)     {}
  96.     virtual void FormatBasecount (const CBaseCountItem&, IFlatTextOStream&)   {}
  97.     virtual void FormatSequence  (const CSequenceItem&, IFlatTextOStream&)    {}
  98.     virtual void FormatFeatHeader(const CFeatHeaderItem&, IFlatTextOStream&)  {}
  99.     virtual void FormatFeature   (const CFeatureItemBase&, IFlatTextOStream&) {}
  100.     virtual void FormatDate      (const CDateItem&, IFlatTextOStream&)        {}
  101.     virtual void FormatDBSource  (const CDBSourceItem&, IFlatTextOStream&)    {}
  102.     virtual void FormatPrimary   (const CPrimaryItem&, IFlatTextOStream&)     {}
  103.     virtual void FormatContig    (const CContigItem&, IFlatTextOStream&)      {}
  104.     virtual void FormatWGS       (const CWGSItem&, IFlatTextOStream&)         {}
  105.     virtual void FormatGenome    (const CGenomeItem&, IFlatTextOStream&)      {}
  106.     virtual void FormatOrigin    (const COriginItem&, IFlatTextOStream&)      {}
  107.     // Context
  108.     void SetContext(CFlatFileContext& ctx) { m_Ctx.Reset(&ctx); }
  109.     CFlatFileContext& GetContext(void) { return *m_Ctx; }
  110. protected:
  111.     CFlatItemFormatter(void) {}
  112.     CFlatItemFormatter(const CFlatItemFormatter&);
  113.     CFlatItemFormatter& operator=(const CFlatItemFormatter&);
  114.     enum EPadContext {
  115.         ePara,
  116.         eSubp,
  117.         eFeatHead,
  118.         eFeat
  119.     };
  120.     static const string s_GenbankMol[];
  121.     virtual SIZE_TYPE GetWidth(void) const { return 78; }
  122.     static  string& x_Pad(const string& s, string& out, SIZE_TYPE width,
  123.                         const string& indent = kEmptyStr);
  124.     virtual string& Pad(const string& s, string& out, EPadContext where) const;
  125.     virtual list<string>& Wrap(list<string>& l, SIZE_TYPE width, 
  126.         const string& tag, const string& body, EPadContext where = ePara) const;
  127.     virtual list<string>& Wrap(list<string>& l, const string& tag,
  128.         const string& body, EPadContext where = ePara) const;
  129.     void x_FormatRefLocation(CNcbiOstrstream& os, const CSeq_loc& loc,
  130.         const string& to, const string& delim,
  131.         CBioseqContext& ctx) const;
  132.     void x_FormatRefJournal(string& journal, const CReferenceItem& ref) const;
  133.     string x_FormatAccession(const CAccessionItem& acc, char separator) const;
  134.     void x_GetKeywords(const CKeywordsItem& kws, const string& prefix,
  135.         list<string>& l) const;
  136.     const string& GetIndent(void) const { return m_Indent; }
  137.     void SetIndent(const string& indent) { m_Indent = indent; }
  138.     const string& GetFeatIndent(void) const { return m_FeatIndent; }
  139.     void SetFeatIndent(const string& feat_indent) { m_FeatIndent = feat_indent; }
  140. private:
  141.     // data
  142.     string                 m_Indent;
  143.     string                 m_FeatIndent;
  144.     CRef<CFlatFileContext> m_Ctx;
  145. };
  146. END_SCOPE(objects)
  147. END_NCBI_SCOPE
  148. /*
  149. * ===========================================================================
  150. *
  151. * $Log: item_formatter.hpp,v $
  152. * Revision 1000.1  2004/06/01 19:39:04  gouriano
  153. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7
  154. *
  155. * Revision 1.7  2004/04/22 15:46:39  shomrat
  156. * Changes in context
  157. *
  158. * Revision 1.6  2004/04/13 16:43:41  shomrat
  159. * + x_FormatRefJournal()
  160. *
  161. * Revision 1.5  2004/03/18 15:31:19  shomrat
  162. * Changed default width value
  163. *
  164. * Revision 1.4  2004/02/19 17:58:53  shomrat
  165. * Added method to format Origin item
  166. *
  167. * Revision 1.3  2004/02/11 16:48:14  shomrat
  168. * removed variable names to supress compiler warnings
  169. *
  170. * Revision 1.2  2004/01/14 15:56:18  shomrat
  171. * const removed; added control methods
  172. *
  173. * Revision 1.1  2003/12/17 19:53:37  shomrat
  174. * Initial revision (adapted from flat lib)
  175. *
  176. *
  177. * ===========================================================================
  178. */
  179. #endif  /* OBJTOOLS_FORMAT___ITEM_FORMATTER_HPP */