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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: comments.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:42:39  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: comments.cpp,v 1000.1 2004/06/01 19:42:39 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: Eugene Vasilchenko
  35. *
  36. * File Description:
  37. *   !!! PUT YOUR DESCRIPTION HERE !!!
  38. *
  39. * ---------------------------------------------------------------------------
  40. * $Log: comments.cpp,v $
  41. * Revision 1000.1  2004/06/01 19:42:39  gouriano
  42. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  43. *
  44. * Revision 1.4  2004/05/17 21:03:13  gorelenk
  45. * Added include of PCH ncbi_pch.hpp
  46. *
  47. * Revision 1.3  2003/03/11 20:06:47  kuznets
  48. * iterate -> ITERATE
  49. *
  50. * Revision 1.2  2001/05/17 15:07:11  lavr
  51. * Typos corrected
  52. *
  53. * Revision 1.1  2000/11/29 17:42:44  vasilche
  54. * Added CComment class for storing/printing ASN.1/XML module comments.
  55. * Added srcutil.hpp file to reduce file dependency.
  56. *
  57. * ===========================================================================
  58. */
  59. #include <ncbi_pch.hpp>
  60. #include <corelib/ncbistd.hpp>
  61. #include <corelib/ncbiutil.hpp>
  62. #include <serial/datatool/comments.hpp>
  63. #include <serial/datatool/srcutil.hpp>
  64. BEGIN_NCBI_SCOPE
  65. CComments::CComments(void)
  66. {
  67. }
  68. CComments::~CComments(void)
  69. {
  70. }
  71. void CComments::Add(const string& s)
  72. {
  73.     m_Comments.push_back(s);
  74. }
  75. CNcbiOstream& CComments::Print(CNcbiOstream& out,
  76.                                const string& before,
  77.                                const string& between,
  78.                                const string& after) const
  79. {
  80.     out << before;
  81.     ITERATE ( TComments, i, m_Comments ) {
  82.         if ( i != m_Comments.begin() )
  83.             out << between;
  84.         out << *i;
  85.     }
  86.     return out << after;
  87. }
  88. CNcbiOstream& CComments::PrintDTD(CNcbiOstream& out, int flags) const
  89. {
  90.     if ( Empty() ) // no comments
  91.         return out;
  92.     if ( !(flags & eDoNotWriteBlankLine) ) {
  93.         // prepend comments by empty line to separate from previous comments
  94.         out << 'n';
  95.     }
  96.     // comments start
  97.     out <<
  98.         "<!--";
  99.     if ( !(flags & eAlwaysMultiline) && OneLine() ) {
  100.         // one line comment
  101.         out << m_Comments.front() << ' ';
  102.     }
  103.     else {
  104.         // multiline comments
  105.         out << 'n';
  106.         ITERATE ( TComments, i, m_Comments ) {
  107.             out << *i << 'n';
  108.         }
  109.     }
  110.     // comments end
  111.     out << "-->";
  112.     
  113.     if ( !(flags & eNoEOL) )
  114.         out << 'n';
  115.     return out;
  116. }
  117. CNcbiOstream& CComments::PrintASN(CNcbiOstream& out,
  118.                                   int indent, int flags) const
  119. {
  120.     if ( Empty() ) // no comments
  121.         return out;
  122.     bool newLine = (flags & eDoNotWriteBlankLine) == 0;
  123.     // prepend comments by empty line to separate from previous comments
  124.     ITERATE ( TComments, i, m_Comments ) {
  125.         if ( newLine )
  126.             PrintASNNewLine(out, indent);
  127.         out << "--" << *i;
  128.         newLine = true;
  129.     }
  130.     if ( (flags & eNoEOL) == 0 )
  131.         PrintASNNewLine(out, indent);
  132.     return out;
  133. }
  134. END_NCBI_SCOPE