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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: serializable.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 19:41:46  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: serializable.cpp,v 1000.2 2004/06/01 19:41:46 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:  Michael Kholodov
  35. *
  36. * File Description:
  37. *   General serializable interface for different output formats
  38. *
  39. * ---------------------------------------------------------------------------
  40. * $Log: serializable.cpp,v $
  41. * Revision 1000.2  2004/06/01 19:41:46  gouriano
  42. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  43. *
  44. * Revision 1.6  2004/05/17 21:03:03  gorelenk
  45. * Added include of PCH ncbi_pch.hpp
  46. *
  47. * Revision 1.5  2004/01/16 22:10:44  ucko
  48. * Tweak to use a proxy class to avoid clashing with new support for
  49. * feeding CSerialObject to streams.
  50. *
  51. * Revision 1.4  2003/03/10 18:54:26  gouriano
  52. * use new structured exceptions (based on CException)
  53. *
  54. * Revision 1.3  2001/05/21 14:38:32  kholodov
  55. * Added: method WriteAsString() for string representation of an object.
  56. *
  57. * Revision 1.2  2001/04/17 04:08:27  vakatov
  58. * Redesigned from a pure interface (ISerializable) into a regular
  59. * base class (CSerializable) to make its usage safer, more formal and
  60. * less bulky.
  61. *
  62. * Revision 1.1  2001/04/12 17:01:11  kholodov
  63. * General serializable interface for different output formats
  64. *
  65. * ===========================================================================
  66. */
  67. #include <ncbi_pch.hpp>
  68. #include <serial/serializable.hpp>
  69. #include <serial/exception.hpp>
  70. BEGIN_NCBI_SCOPE
  71. void CSerializable::WriteAsFasta(ostream& /*out*/)
  72.     const
  73. {
  74.     NCBI_THROW(CSerialException,eNotImplemented,
  75.         "CSerializable::WriteAsFasta: not implemented");
  76. }
  77. void CSerializable::WriteAsAsnText(ostream& /*out*/)
  78.     const
  79. {
  80.     NCBI_THROW(CSerialException,eNotImplemented,
  81.                  "CSerializable::WriteAsAsnText: not implemented");
  82. }
  83. void CSerializable::WriteAsAsnBinary(ostream& /*out*/)
  84.     const
  85. {
  86.     NCBI_THROW(CSerialException,eNotImplemented,
  87.                  "CSerializable::WriteAsAsnBinary: not implemented");
  88. }
  89. void CSerializable::WriteAsXML(ostream& /*out*/)
  90.     const
  91. {
  92.     NCBI_THROW(CSerialException,eNotImplemented,
  93.                  "CSerializable::WriteAsXML: not implemented");
  94. }
  95. void CSerializable::WriteAsString(ostream& /*out*/)
  96.     const
  97. {
  98.     NCBI_THROW(CSerialException,eNotImplemented,
  99.                  "CSerializable::WriteAsString: not implemented");
  100. }
  101. ostream& operator << (ostream& out, const CSerializable::CProxy& src) 
  102. {
  103.     switch ( src.m_OutputType ) {
  104.     case CSerializable::eAsFasta:
  105.         src.m_Obj.WriteAsFasta(out);
  106.         break;
  107.     case CSerializable::eAsAsnText:
  108.         src.m_Obj.WriteAsAsnText(out);
  109.         break;
  110.     case CSerializable::eAsAsnBinary:
  111.         src.m_Obj.WriteAsAsnBinary(out);
  112.         break;
  113.     case CSerializable::eAsXML:
  114.         src.m_Obj.WriteAsXML(out);
  115.         break;
  116.     case CSerializable::eAsString:
  117.         src.m_Obj.WriteAsString(out);
  118.         break;
  119.     default:
  120.         NCBI_THROW(CSerialException,eFail,
  121.                    "operator<<(ostream&,CSerializable::CProxy&):"
  122.                    " wrong output type");
  123.     }
  124.     return out;
  125. };
  126. END_NCBI_SCOPE