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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ncbitype.h,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 15:06:20  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef CORELIB___NCBITYPE__H
  10. #define CORELIB___NCBITYPE__H
  11. /*  $Id: ncbitype.h,v 1000.0 2003/10/29 15:06:20 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:  Denis Vakatov
  37.  *
  38.  *
  39.  */
  40. /// @file ncbitype.h
  41. ///
  42. /// Defines NCBI C/C++ fixed-size types:
  43. /// -  Char, Uchar
  44. /// -  Int1, Uint1
  45. /// -  Int2, Uint2
  46. /// -  Int4, Uint4
  47. /// -  Int8, Uint8
  48. /// -  Ncbi_BigScalar
  49. #include <ncbiconf.h>
  50. /** @addtogroup Portability
  51.  *
  52.  * @{
  53.  */
  54. // threads configuration
  55. #undef NCBI_NO_THREADS
  56. #undef NCBI_THREADS
  57. #undef NCBI_POSIX_THREADS
  58. #undef NCBI_WIN32_THREADS
  59. #if defined(_MT)  &&  !defined(NCBI_WITHOUT_MT)
  60. #  if defined(NCBI_OS_MSWIN)
  61. #    define NCBI_WIN32_THREADS
  62. #  elif defined(NCBI_OS_UNIX)
  63. #    define NCBI_POSIX_THREADS
  64. #  else
  65. #    define NCBI_NO_THREADS
  66. #  endif
  67. #else
  68. #  define NCBI_NO_THREADS
  69. #endif
  70. #if !defined(NCBI_NO_THREADS)
  71. #  define NCBI_THREADS
  72. #endif
  73. /* Char, Uchar, Int[1,2,4], Uint[1,2,4]
  74.  */
  75. #if (SIZEOF_CHAR != 1)
  76. #  error "Unsupported size of char(must be 1 byte)"
  77. #endif
  78. #if (SIZEOF_SHORT != 2)
  79. #  error "Unsupported size of short int(must be 2 bytes)"
  80. #endif
  81. #if (SIZEOF_INT != 4)
  82. #  error "Unsupported size of int(must be 4 bytes)"
  83. #endif
  84. typedef          char  Char;    ///< Alias for char
  85. typedef signed   char  Schar;   ///< Alias for signed char
  86. typedef unsigned char  Uchar;   ///< Alias for unsigned char
  87. typedef signed   char  Int1;    ///< Alias for signed char
  88. typedef unsigned char  Uint1;   ///< Alias for unsigned char
  89. typedef signed   short Int2;    ///< Alias for signed short
  90. typedef unsigned short Uint2;   ///< Alias for unsigned short
  91. typedef signed   int   Int4;    ///< Alias for signed int
  92. typedef unsigned int   Uint4;   ///< Alias for unsigned int
  93. /* Int8, Uint8
  94.  */
  95. #if   (SIZEOF_LONG == 8)
  96. #  define INT8_TYPE long
  97. #elif (SIZEOF_LONG_LONG == 8)
  98. #  define INT8_TYPE long long
  99. #elif (SIZEOF___INT64 == 8)
  100. #  define NCBI_USE_INT64 1
  101. #  define INT8_TYPE __int64
  102. #else
  103. #  error "This platform does not support 8-byte integer"
  104. #endif
  105. /// Signed 8 byte sized integer.
  106. typedef signed   INT8_TYPE Int8;    
  107. /// Unsigned 8 byte sized integer.
  108. typedef unsigned INT8_TYPE Uint8;
  109. /* BigScalar
  110.  */
  111. #define BIG_TYPE INT8_TYPE
  112. #define BIG_SIZE 8
  113. #if (SIZEOF_LONG_DOUBLE > BIG_SIZE)
  114. #  undef  BIG_TYPE
  115. #  undef  BIG_SIZE
  116. #  define BIG_TYPE long double 
  117. #  define BIG_SIZE SIZEOF_LONG_DOUBLE
  118. #endif
  119. #if (SIZEOF_DOUBLE > BIG_SIZE)
  120. #  undef  BIG_TYPE
  121. #  undef  BIG_SIZE
  122. #  define BIG_TYPE double
  123. #  define BIG_SIZE SIZEOF_DOUBLE
  124. #endif
  125. #if (SIZEOF_VOIDP > BIG_SIZE)
  126. #  undef  BIG_TYPE
  127. #  undef  BIG_SIZE
  128. #  define BIG_TYPE void*
  129. #  define BIG_SIZE SIZEOF_VOIDP
  130. #endif
  131. /// Define large scalar type.
  132. ///
  133. /// This is platform dependent. It could be an Int8, long double, double
  134. /// or void*.
  135. typedef BIG_TYPE Ncbi_BigScalar;
  136. /* Undef auxiliaries
  137.  */
  138. #undef BIG_SIZE
  139. #undef BIG_TYPE
  140. #undef INT8_TYPE
  141. /* @} */
  142. /*
  143.  * ===========================================================================
  144.  * $Log: ncbitype.h,v $
  145.  * Revision 1000.0  2003/10/29 15:06:20  gouriano
  146.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.13
  147.  *
  148.  * Revision 1.13  2003/09/03 14:46:33  siyan
  149.  * Minor doxygen related changes.
  150.  *
  151.  * Revision 1.12  2003/04/01 19:19:03  siyan
  152.  * Added doxygen support
  153.  *
  154.  * Revision 1.11  2003/03/03 20:34:50  vasilche
  155.  * Added NCBI_THREADS macro - it's opposite to NCBI_NO_THREADS.
  156.  * Avoid using _REENTRANT macro - use NCBI_THREADS instead.
  157.  *
  158.  * Revision 1.10  2002/09/20 14:13:51  vasilche
  159.  * Fixed inconsistency of NCBI_*_THREADS macros
  160.  *
  161.  * Revision 1.9  2002/04/11 20:39:20  ivanov
  162.  * CVS log moved to end of the file
  163.  *
  164.  * Revision 1.8  2001/05/30 16:17:23  vakatov
  165.  * Introduced #NCBI_USE_INT64 -- in oreder to use "__int64" type
  166.  * only when absolutely necessary (otherwise it conflicted with
  167.  * "long long" for the Intel C++ compiler).
  168.  *
  169.  * Revision 1.7  2001/04/16 18:51:05  vakatov
  170.  * "Char" to become "char" rather than "signed char".
  171.  * Introduced "Schar" for "signed char".
  172.  *
  173.  * Revision 1.6  2001/01/03 17:41:49  vakatov
  174.  * All type limits moved to "ncbi_limits.h"
  175.  *
  176.  * Revision 1.5  1999/04/14 19:49:22  vakatov
  177.  * Fixed suffixes of the 8-byte int constants
  178.  * Introduced limits for native signed and unsigned integer types
  179.  * (char, short, int)
  180.  *
  181.  * Revision 1.4  1999/03/11 16:32:02  vakatov
  182.  * BigScalar --> Ncbi_BigScalar
  183.  *
  184.  * Revision 1.3  1998/11/06 22:42:39  vakatov
  185.  * Introduced BEGIN_, END_ and USING_ NCBI_SCOPE macros to put NCBI C++
  186.  * API to namespace "ncbi::" and to use it by default, respectively
  187.  * Introduced THROWS_NONE and THROWS(x) macros for the exception
  188.  * specifications
  189.  * Other fixes and rearrangements throughout the most of "corelib" code
  190.  *
  191.  * Revision 1.2  1998/10/30 20:08:34  vakatov
  192.  * Fixes to (first-time) compile and test-run on MSVS++
  193.  *
  194.  * Revision 1.1  1998/10/20 22:58:55  vakatov
  195.  * Initial revision
  196.  *
  197.  * ==========================================================================
  198.  */
  199. #endif /* NCBITYPE__H */