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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: asn_sizer.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 17:33:19  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef NCBI_OBJMGR_SPLIT_ASN_SIZER__HPP
  10. #define NCBI_OBJMGR_SPLIT_ASN_SIZER__HPP
  11. /*  $Id: asn_sizer.hpp,v 1000.0 2004/04/12 17:33:19 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:  Eugene Vasilchenko
  37. *
  38. * File Description:
  39. *   Application for splitting blobs withing ID1 cache
  40. *
  41. * ===========================================================================
  42. */
  43. #include <corelib/ncbistd.hpp>
  44. #include <corelib/ncbiobj.hpp>
  45. #include <serial/serial.hpp>
  46. #include <serial/objostr.hpp>
  47. #include <vector>
  48. BEGIN_NCBI_SCOPE
  49. class CObjectOStream;
  50. BEGIN_SCOPE(objects)
  51. struct SSplitterParams;
  52. class CAsnSizer
  53. {
  54. public:
  55.     CAsnSizer(void);
  56.     ~CAsnSizer(void);
  57.     CObjectOStream& OpenDataStream(void);
  58.     void CloseDataStream(void);
  59.     size_t GetAsnSize(void) const
  60.         {
  61.             return m_AsnData.size();
  62.         }
  63.     const char* GetAsnData(void) const
  64.         {
  65.             return &m_AsnData.front();
  66.         }
  67.     size_t GetCompressedSize(void) const
  68.         {
  69.             return m_CompressedData.size();
  70.         }
  71.     const char* GetCompressedData(void) const
  72.         {
  73.             return &m_CompressedData.front();
  74.         }
  75.     size_t GetCompressedSize(const SSplitterParams& params);
  76.     template<class C>
  77.     void Set(const C& obj)
  78.         {
  79.             OpenDataStream() << obj;
  80.             CloseDataStream();
  81.         }
  82.     template<class C>
  83.     void Set(const C& obj, const SSplitterParams& params)
  84.         {
  85.             Set(obj);
  86.             GetCompressedSize(params);
  87.         }
  88.     template<class C>
  89.     size_t GetAsnSize(const C& obj)
  90.         {
  91.             Set(obj);
  92.             return GetAsnSize();
  93.         }
  94.     template<class C>
  95.     size_t GetCompressedSize(const C& obj, const SSplitterParams& params)
  96.         {
  97.             Set(obj, params);
  98.             return GetCompressedSize();
  99.         }
  100.     // stream utility
  101.     vector<char> m_AsnData;
  102.     vector<char> m_CompressedData;
  103.     AutoPtr<CNcbiOstrstream> m_MStream;
  104.     AutoPtr<CObjectOStream> m_OStream;
  105. };
  106. END_SCOPE(objects)
  107. END_NCBI_SCOPE
  108. /*
  109. * ---------------------------------------------------------------------------
  110. * $Log: asn_sizer.hpp,v $
  111. * Revision 1000.0  2004/04/12 17:33:19  gouriano
  112. * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.3
  113. *
  114. * Revision 1.3  2003/12/02 19:12:23  vasilche
  115. * Fixed compilation on MSVC.
  116. *
  117. * Revision 1.2  2003/11/26 23:04:57  vasilche
  118. * Removed extra semicolons after BEGIN_SCOPE and END_SCOPE.
  119. *
  120. * Revision 1.1  2003/11/12 16:18:24  vasilche
  121. * First implementation of ID2 blob splitter withing cache.
  122. *
  123. * ===========================================================================
  124. */
  125. #endif//NCBI_OBJMGR_SPLIT_ASN_SIZER__HPP