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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: genbank.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2003/11/18 15:46:58  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [ORIGINAL] Dev-tree R1.14
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GENBANK__HPP
  10. #define GENBANK__HPP
  11. /*  $Id: genbank.hpp,v 1000.1 2003/11/18 15:46:58 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
  37. *
  38. * File Description:
  39. *   Code to write Genbank/Genpept flat-file records.
  40. */
  41. #include <objtools/flat/flat_ncbi_formatter.hpp>
  42. BEGIN_NCBI_SCOPE
  43. BEGIN_SCOPE(objects)
  44. class NCBI_XOBJUTIL_EXPORT CGenbankWriter
  45. {
  46. public:
  47.     enum EFormat {
  48.         eFormat_Genbank,
  49.         eFormat_Genpept
  50.     };
  51.     enum EVersion {
  52.         // Genbank 127.0, to be released December 2001, will have a new
  53.         // format for the LOCUS line, with more space for most fields.
  54.         eVersion_pre127,
  55.         eVersion_127 = 127
  56.     };
  57.     
  58.     CGenbankWriter(CNcbiOstream& stream, CScope& scope,
  59.                    EFormat format = eFormat_Genbank,
  60.                    EVersion version = eVersion_127) :
  61.         m_Formatter(*new CFlatTextOStream(stream), scope,
  62.                     IFlatFormatter::eMode_Dump),
  63.         m_Format(format)
  64.         { }
  65.     bool Write(const CSeq_entry& entry);
  66. private:
  67.     CFlatNCBIFormatter m_Formatter;
  68.     EFormat            m_Format;
  69. };
  70. bool CGenbankWriter::Write(const CSeq_entry& entry)
  71. {
  72.     m_Formatter.Format
  73.         (entry, m_Formatter,
  74.          m_Format == eFormat_Genpept ? IFlatFormatter::fSkipNucleotides
  75.          : IFlatFormatter::fSkipProteins);
  76.     return true;
  77. }
  78. END_SCOPE(objects)
  79. END_NCBI_SCOPE
  80. /*
  81. * ===========================================================================
  82. * $Log: genbank.hpp,v $
  83. * Revision 1000.1  2003/11/18 15:46:58  gouriano
  84. * PRODUCTION: UPGRADED [ORIGINAL] Dev-tree R1.14
  85. *
  86. * Revision 1.14  2003/11/05 15:32:29  ucko
  87. * Make Write non-const per IFlatFormatter::Format.
  88. *
  89. * Revision 1.13  2003/07/16 19:01:56  ucko
  90. * Add IFlatFormatter:: where needed.
  91. *
  92. * Revision 1.12  2003/07/16 17:10:55  ucko
  93. * Replace with a trivial inline wrapper around the new formatter.
  94. *
  95. * Revision 1.11  2003/06/02 16:01:38  dicuccio
  96. * Rearranged include/objects/ subtree.  This includes the following shifts:
  97. *     - include/objects/alnmgr --> include/objtools/alnmgr
  98. *     - include/objects/cddalignview --> include/objtools/cddalignview
  99. *     - include/objects/flat --> include/objtools/flat
  100. *     - include/objects/objmgr/ --> include/objmgr/
  101. *     - include/objects/util/ --> include/objmgr/util/
  102. *     - include/objects/validator --> include/objtools/validator
  103. *
  104. * Revision 1.10  2002/12/26 12:44:39  dicuccio
  105. * Added Win32 export specifiers
  106. *
  107. * Revision 1.9  2002/10/10 17:57:36  ucko
  108. * Make most methods const (and m_Stream consequently mutable) to keep
  109. * WorkShop from complaining when CGenbankWriter is used as a temporary.
  110. *
  111. * Revision 1.8  2002/05/06 16:11:12  ucko
  112. * Merge in Andrei Gourianov's changes to use the new OM (thanks!)
  113. * Move CVS log to end.
  114. *
  115. *
  116. * *** These two entries are from src/app/id1_fetch1/genbank1.hpp ***
  117. * Revision 1.2  2002/05/06 03:31:52  vakatov
  118. * OM/OM1 renaming
  119. *
  120. * Revision 1.1  2002/04/04 16:31:36  gouriano
  121. * id1_fetch1 - modified version of id1_fetch, which uses objmgr1
  122. *
  123. * Revision 1.6  2001/12/07 18:52:02  grichenk
  124. * Updated "#include"-s and forward declarations to work with the
  125. * new datatool version.
  126. *
  127. * Revision 1.5  2001/11/02 20:54:50  ucko
  128. * Make gbqual.hpp private; clean up cruft from genbank.hpp.
  129. *
  130. * Revision 1.4  2001/11/01 16:32:23  ucko
  131. * Rework qualifier handling to support appropriate reordering
  132. *
  133. * Revision 1.3  2001/10/12 15:34:16  ucko
  134. * Edit in-source version of CVS log to avoid end-of-comment marker.  (Oops.)
  135. *
  136. * Revision 1.2  2001/10/12 15:29:04  ucko
  137. * Drop {src,include}/objects/util/asciiseqdata.* in favor of CSeq_vector.
  138. * Rewrite GenBank output code to take fuller advantage of the object manager.
  139. *
  140. * Revision 1.1  2001/09/25 20:12:04  ucko
  141. * More cleanups from Denis.
  142. * Put utility code in the objects namespace.
  143. * Moved utility code to {src,include}/objects/util (to become libxobjutil).
  144. * Moved static members of CGenbankWriter to above their first use.
  145. * ===========================================================================
  146. */
  147. #endif  /* GENBANK__HPP */