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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: size.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 17:33:59  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef NCBI_OBJMGR_SPLIT_SIZE__HPP
  10. #define NCBI_OBJMGR_SPLIT_SIZE__HPP
  11. /*  $Id: size.hpp,v 1000.0 2004/04/12 17:33:59 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. BEGIN_NCBI_SCOPE
  45. BEGIN_SCOPE(objects)
  46. class CAsnSizer;
  47. class CSize
  48. {
  49. public:
  50.     typedef size_t TDataSize;
  51.     CSize(void)
  52.         {
  53.             clear();
  54.         }
  55.     CSize(const CAsnSizer& sizer);
  56.     CSize(TDataSize asn_size, double ratio);
  57.     void clear(void)
  58.         {
  59.             m_Count = 0;
  60.             m_AsnSize = 0;
  61.             m_ZipSize = 0;
  62.         }
  63.     CSize& operator+=(const CSize& size)
  64.         {
  65.             m_Count += size.m_Count;
  66.             m_AsnSize += size.m_AsnSize;
  67.             m_ZipSize += size.m_ZipSize;
  68.             return *this;
  69.         }
  70.     CSize& operator-=(const CSize& size)
  71.         {
  72.             m_Count -= size.m_Count;
  73.             m_AsnSize -= size.m_AsnSize;
  74.             m_ZipSize -= size.m_ZipSize;
  75.             return *this;
  76.         }
  77.     CSize operator+(const CSize& size) const
  78.         {
  79.             CSize ret(*this);
  80.             ret += size;
  81.             return ret;
  82.         }
  83.     size_t GetCount(void) const
  84.         {
  85.             return m_Count;
  86.         }
  87.     TDataSize GetAsnSize(void) const
  88.         {
  89.             return m_AsnSize;
  90.         }
  91.     TDataSize GetZipSize(void) const
  92.         {
  93.             return m_ZipSize;
  94.         }
  95.     double GetRatio(void) const
  96.         {
  97.             return double(m_ZipSize)/m_AsnSize;
  98.         }
  99.     
  100.     CNcbiOstream& Print(CNcbiOstream& out) const;
  101.     operator bool(void) const
  102.         {
  103.             return m_Count != 0;
  104.         }
  105.     bool operator!(void) const
  106.         {
  107.             return m_Count == 0;
  108.         }
  109.     bool operator>(const CSize& size) const
  110.         {
  111.             return m_ZipSize > size.m_ZipSize;
  112.         }
  113. private:
  114.     size_t m_Count;
  115.     TDataSize m_AsnSize;
  116.     TDataSize m_ZipSize;
  117. };
  118. inline
  119. CNcbiOstream& operator<<(CNcbiOstream& out, const CSize& size)
  120. {
  121.     return size.Print(out);
  122. }
  123. END_SCOPE(objects)
  124. END_NCBI_SCOPE
  125. /*
  126. * ---------------------------------------------------------------------------
  127. * $Log: size.hpp,v $
  128. * Revision 1000.0  2004/04/12 17:33:59  gouriano
  129. * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.3
  130. *
  131. * Revision 1.3  2003/11/26 23:05:00  vasilche
  132. * Removed extra semicolons after BEGIN_SCOPE and END_SCOPE.
  133. *
  134. * Revision 1.2  2003/11/26 17:56:02  vasilche
  135. * Implemented ID2 split in ID1 cache.
  136. * Fixed loading of splitted annotations.
  137. *
  138. * Revision 1.1  2003/11/12 16:18:32  vasilche
  139. * First implementation of ID2 blob splitter withing cache.
  140. *
  141. * ===========================================================================
  142. */
  143. #endif//NCBI_OBJMGR_SPLIT_SIZE__HPP