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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: split_blob.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 17:34:08  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef NCBI_OBJMGR_SPLIT_SPLITTED_BLOB__HPP
  10. #define NCBI_OBJMGR_SPLIT_SPLITTED_BLOB__HPP
  11. /*  $Id: split_blob.hpp,v 1000.0 2004/04/12 17:34:08 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 <objects/seqsplit/ID2S_Chunk_Id.hpp>
  46. #include <vector>
  47. #include <map>
  48. BEGIN_NCBI_SCOPE
  49. BEGIN_SCOPE(objects)
  50. class CSeq_entry;
  51. class CID2S_Split_Info;
  52. class CID2S_Chunk;
  53. class CID2S_Chunk_Id;
  54. class CSplitBlob
  55. {
  56. public:
  57.     CSplitBlob(void);
  58.     ~CSplitBlob(void);
  59.     CSplitBlob(const CSplitBlob& blob);
  60.     CSplitBlob& operator=(const CSplitBlob& blob);
  61.     void Reset(void);
  62.     void Reset(const CSeq_entry& entry);
  63.     void Reset(const CSeq_entry& skeleton,
  64.                const CID2S_Split_Info& split_info);
  65.     void AddChunk(const CID2S_Chunk_Id& id, const CID2S_Chunk& chunk);
  66.     bool IsSplit(void) const
  67.         {
  68.             return m_SplitInfo;
  69.         }
  70.     typedef map<CID2S_Chunk_Id, CConstRef<CID2S_Chunk> > TChunks;
  71.     const CSeq_entry& GetMainBlob(void) const
  72.         {
  73.             return *m_MainBlob;
  74.         }
  75.     const CID2S_Split_Info& GetSplitInfo(void) const
  76.         {
  77.             return *m_SplitInfo;
  78.         }
  79.     const TChunks& GetChunks(void) const
  80.         {
  81.             return m_Chunks;
  82.         }
  83. private:
  84.     CConstRef<CSeq_entry> m_MainBlob;
  85.     CConstRef<CID2S_Split_Info> m_SplitInfo;
  86.     TChunks m_Chunks;
  87. };
  88. END_SCOPE(objects)
  89. END_NCBI_SCOPE
  90. /*
  91. * ---------------------------------------------------------------------------
  92. * $Log: split_blob.hpp,v $
  93. * Revision 1000.0  2004/04/12 17:34:08  gouriano
  94. * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.5
  95. *
  96. * Revision 1.5  2004/01/22 20:10:39  vasilche
  97. * 1. Splitted ID2 specs to two parts.
  98. * ID2 now specifies only protocol.
  99. * Specification of ID2 split data is moved to seqsplit ASN module.
  100. * For now they are still reside in one resulting library as before - libid2.
  101. * As the result split specific headers are now in objects/seqsplit.
  102. * 2. Moved ID2 and ID1 specific code out of object manager.
  103. * Protocol is processed by corresponding readers.
  104. * ID2 split parsing is processed by ncbi_xreader library - used by all readers.
  105. * 3. Updated OBJMGR_LIBS correspondingly.
  106. *
  107. * Revision 1.4  2003/12/03 19:30:46  kuznets
  108. * Misprint fixed
  109. *
  110. * Revision 1.3  2003/12/02 19:12:24  vasilche
  111. * Fixed compilation on MSVC.
  112. *
  113. * Revision 1.2  2003/11/26 23:05:00  vasilche
  114. * Removed extra semicolons after BEGIN_SCOPE and END_SCOPE.
  115. *
  116. * Revision 1.1  2003/11/12 16:18:33  vasilche
  117. * First implementation of ID2 blob splitter withing cache.
  118. *
  119. * ===========================================================================
  120. */
  121. #endif//NCBI_OBJMGR_SPLIT_SPLITTED_BLOB__HPP