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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: typeref.inl,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:32:58  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #if defined(TYPEREF__HPP)  &&  !defined(TYPEREF__INL)
  10. #define TYPEREF__INL
  11. /*  $Id: typeref.inl,v 1000.0 2003/10/29 17:32:58 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. inline
  42. CTypeRef::CTypeRef(void)
  43.     : m_Getter(sx_GetAbort), m_ReturnData(0)
  44. {
  45. }
  46. inline
  47. CTypeRef::CTypeRef(TTypeInfo typeInfo)
  48.     : m_Getter(sx_GetReturn), m_ReturnData(typeInfo)
  49. {
  50. }
  51. inline
  52. CTypeRef::CTypeRef(TGetProc getProc)
  53.     : m_Getter(sx_GetProc), m_ReturnData(0)
  54. {
  55.     m_GetProcData = getProc;
  56. }
  57. inline
  58. CTypeRef::CTypeRef(CTypeInfoSource* source)
  59.     : m_Getter(sx_GetResolve), m_ReturnData(0)
  60. {
  61.     m_ResolveData = source;
  62. }
  63. inline
  64. CTypeRef::CTypeRef(const CTypeRef& typeRef)
  65.     : m_Getter(sx_GetAbort), m_ReturnData(0)
  66. {
  67.     Assign(typeRef);
  68. }
  69. inline
  70. CTypeRef::~CTypeRef(void)
  71. {
  72.     Unref();
  73. }
  74. inline
  75. TTypeInfo CTypeRef::Get(void) const
  76. {
  77.     TTypeInfo ret = m_ReturnData;
  78.     return ret? ret: m_Getter(*this);
  79. }
  80. inline
  81. CTypeRef::operator bool(void) const
  82. {
  83.     return m_Getter != sx_GetAbort;
  84. }
  85. inline
  86. bool CTypeRef::operator!(void) const
  87. {
  88.     return m_Getter == sx_GetAbort;
  89. }
  90. #endif /* def TYPEREF__HPP  &&  ndef TYPEREF__INL */
  91. /* ---------------------------------------------------------------------------
  92. * $Log: typeref.inl,v $
  93. * Revision 1000.0  2003/10/29 17:32:58  gouriano
  94. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.6
  95. *
  96. * Revision 1.6  2002/12/23 18:38:52  dicuccio
  97. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  98. * Moved all CVS logs to the end.
  99. *
  100. * Revision 1.5  2002/08/30 16:18:25  vasilche
  101. * Avoid MT lock in CTypeRef::Get()
  102. *
  103. * Revision 1.4  1999/12/17 19:04:55  vasilche
  104. * Simplified generation of GetTypeInfo methods.
  105. *
  106. * Revision 1.3  1999/08/13 15:53:46  vasilche
  107. * C++ analog of asntool: datatool
  108. *
  109. * Revision 1.2  1999/07/13 20:18:13  vasilche
  110. * Changed types naming.
  111. *
  112. * Revision 1.1  1999/06/24 14:44:48  vasilche
  113. * Added binary ASN.1 output.
  114. *
  115. * ===========================================================================
  116. */