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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: flat_item.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 20:59:23  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJECTS_FLAT___FLAT_ITEM__HPP
  10. #define OBJECTS_FLAT___FLAT_ITEM__HPP
  11. /*  $Id: flat_item.hpp,v 1000.0 2003/10/29 20:59:23 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. *
  38. * File Description:
  39. *   new (early 2003) flat-file generator -- base class for items
  40. *   (which roughly correspond to blocks/paragraphs in the C version)
  41. *
  42. */
  43. #include <corelib/ncbiobj.hpp>
  44. BEGIN_NCBI_SCOPE
  45. BEGIN_SCOPE(objects)
  46. class IFlatFormatter;
  47. class IFlatItem : public CObject
  48. {
  49. public:
  50.     virtual void Format(IFlatFormatter& f) const = 0;
  51. };
  52. class IFlatItemOStream
  53. {
  54. public:
  55.     // NB: i must be allocated on the heap!
  56.     virtual void AddItem(CConstRef<IFlatItem> i) = 0;
  57.     virtual ~IFlatItemOStream() { }
  58. };
  59. inline
  60. IFlatItemOStream& operator <<(IFlatItemOStream& out, const IFlatItem* i)
  61. {
  62.     out.AddItem(CConstRef<IFlatItem>(i));
  63.     return out;
  64. }
  65. // saves the items for later use (e.g., on-demand graphical display)
  66. class CFlatItemCollector : public IFlatItemOStream
  67. {
  68. public:
  69.     typedef list<CConstRef<IFlatItem> > TItems;
  70.     const TItems& GetItems(void) const { return m_Items; }
  71.     void AddItem(CConstRef<IFlatItem> i)
  72.         { m_Items.push_back(i); }
  73. private:
  74.     TItems m_Items;
  75. };
  76. // derived classes predeclared here, for (minor) convenience
  77. class CFlatForehead;
  78. class CFlatHead;
  79. class CFlatKeywords;
  80. class CFlatSegment;
  81. class CFlatSource;
  82. class CFlatReference;
  83. class CFlatComment;
  84. class CFlatPrimary;
  85. class CFlatFeatHeader;
  86. class IFlattishFeature;
  87. class CFlatDataHeader;
  88. class CFlatData;
  89. class CFlatContig;
  90. class CFlatWGSRange;
  91. class CFlatGenomeInfo;
  92. class CFlatTail;
  93. // another useful predeclaration...
  94. class CFlatContext;
  95. END_SCOPE(objects)
  96. END_NCBI_SCOPE
  97. /*
  98. * ===========================================================================
  99. *
  100. * $Log: flat_item.hpp,v $
  101. * Revision 1000.0  2003/10/29 20:59:23  gouriano
  102. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.4
  103. *
  104. * Revision 1.4  2003/04/10 20:08:22  ucko
  105. * Arrange to pass the item as an argument to IFlatTextOStream::AddParagraph
  106. *
  107. * Revision 1.3  2003/03/21 18:47:47  ucko
  108. * Turn most structs into (accessor-requiring) classes; replace some
  109. * formerly copied fields with pointers to the original data.
  110. *
  111. * Revision 1.2  2003/03/10 21:59:41  ucko
  112. * Fix keywords (struct/class) in forward declarations to match reality.
  113. *
  114. * Revision 1.1  2003/03/10 16:39:08  ucko
  115. * Initial check-in of new flat-file generator
  116. *
  117. *
  118. * ===========================================================================
  119. */
  120. #endif  /* OBJECTS_FLAT___FLAT_ITEM__HPP */