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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: item.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:22:47  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.8
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef ITEM__HPP
  10. #define ITEM__HPP
  11. /*  $Id: item.hpp,v 1000.0 2003/10/29 17:22:47 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. *   !!! PUT YOUR DESCRIPTION HERE !!!
  40. */
  41. #include <corelib/ncbistd.hpp>
  42. #include <serial/serialdef.hpp>
  43. #include <serial/serialutil.hpp>
  44. #include <serial/typeref.hpp>
  45. #include <serial/memberid.hpp>
  46. /** @addtogroup FieldsComplex
  47.  *
  48.  * @{
  49.  */
  50. BEGIN_NCBI_SCOPE
  51. class CItemsInfo;
  52. class NCBI_XSERIAL_EXPORT CItemInfo
  53. {
  54. public:
  55.     enum {
  56.         eNoOffset = -1
  57.     };
  58.     CItemInfo(const CMemberId& id, TPointerOffsetType offset,
  59.               TTypeInfo type);
  60.     CItemInfo(const CMemberId& id, TPointerOffsetType offset,
  61.               const CTypeRef& type);
  62.     CItemInfo(const char* id, TPointerOffsetType offset,
  63.               TTypeInfo type);
  64.     CItemInfo(const char* id, TPointerOffsetType offset,
  65.               const CTypeRef& type);
  66.     virtual ~CItemInfo(void);
  67.     const CMemberId& GetId(void) const;
  68.     CMemberId& GetId(void);
  69.     TMemberIndex GetIndex(void) const;
  70.     TPointerOffsetType GetOffset(void) const;
  71.     TTypeInfo GetTypeInfo(void) const;
  72.     virtual void UpdateDelayedBuffer(CObjectIStream& in,
  73.                                      TObjectPtr classPtr) const = 0;
  74.     TObjectPtr GetItemPtr(TObjectPtr object) const;
  75.     TConstObjectPtr GetItemPtr(TConstObjectPtr object) const;
  76. private:
  77.     friend class CItemsInfo;
  78.     // member ID
  79.     CMemberId m_Id;
  80.     // member index
  81.     TMemberIndex m_Index;
  82.     // offset of member inside object
  83.     TPointerOffsetType m_Offset;
  84.     // type of member
  85.     CTypeRef m_Type;
  86. };
  87. /* @} */
  88. #include <serial/item.inl>
  89. END_NCBI_SCOPE
  90. #endif  /* ITEM__HPP */
  91. /* ---------------------------------------------------------------------------
  92. * $Log: item.hpp,v $
  93. * Revision 1000.0  2003/10/29 17:22:47  gouriano
  94. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.8
  95. *
  96. * Revision 1.8  2003/04/15 14:15:19  siyan
  97. * Added doxygen support
  98. *
  99. * Revision 1.7  2003/04/10 20:13:37  vakatov
  100. * Rollback the "uninitialized member" verification -- it still needs to
  101. * be worked upon...
  102. *
  103. * Revision 1.5  2003/03/26 16:13:32  vasilche
  104. * Removed TAB symbols. Some formatting.
  105. *
  106. * Revision 1.4  2002/12/23 18:38:51  dicuccio
  107. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  108. * Moved all CVS logs to the end.
  109. *
  110. * Revision 1.3  2000/10/13 20:22:45  vasilche
  111. * Fixed warnings on 64 bit compilers.
  112. * Fixed missing typename in templates.
  113. *
  114. * Revision 1.2  2000/10/03 17:22:32  vasilche
  115. * Reduced header dependency.
  116. * Reduced size of debug libraries on WorkShop by 3 times.
  117. * Fixed tag allocation for parent classes.
  118. * Fixed CObject allocation/deallocation in streams.
  119. * Moved instantiation of several templates in separate source file.
  120. *
  121. * Revision 1.1  2000/09/18 20:00:01  vasilche
  122. * Separated CVariantInfo and CMemberInfo.
  123. * Implemented copy hooks.
  124. * All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.
  125. * Most type specific functions now are implemented via function pointers instead of virtual functions.
  126. *
  127. * ===========================================================================
  128. */