Go to the documentation of this file.Go to the SVN repository for this file.
1 #ifndef CORELIB___NCBITYPE__H
2 #define CORELIB___NCBITYPE__H
56 #ifdef HAVE_INTTYPES_H
57 # ifndef __STDC_CONSTANT_MACROS
58 # define __STDC_CONSTANT_MACROS
60 # ifndef __STDC_FORMAT_MACROS
61 # define __STDC_FORMAT_MACROS
70 #if (SIZEOF_CHAR != 1)
71 # error "Unsupported size of char(must be 1 byte)"
73 #if (SIZEOF_SHORT != 2)
74 # error "Unsupported size of short int(must be 2 bytes)"
77 # error "Unsupported size of int(must be 4 bytes)"
97 #ifdef HAVE_INTTYPES_H
108 # if SIZEOF_LONG == 8 && !defined(NCBI_OS_DARWIN)
109 # define NCBI_INT8_IS_LONG 1
110 # elif SIZEOF_LONG_LONG == 8
111 # define NCBI_INT8_IS_LONG_LONG 1
112 # elif SIZEOF___INT64 == 8
113 # define NCBI_INT8_IS_INT64 1
116 typedef signed char Int1;
117 typedef unsigned char Uint1;
118 typedef signed short Int2;
119 typedef unsigned short Uint2;
120 typedef signed int Int4;
121 typedef unsigned int Uint4;
127 # if (SIZEOF_LONG == 8)
128 # define NCBI_INT8_TYPE long
129 # define NCBI_INT8_IS_LONG 1
130 # elif (SIZEOF_LONG_LONG == 8)
131 # define NCBI_INT8_TYPE long long
132 # define NCBI_INT8_IS_LONG_LONG 1
133 # elif (SIZEOF___INT64 == 8)
134 # define NCBI_INT8_TYPE __int64
135 # define NCBI_INT8_IS_INT64 1
137 # define NCBI_USE_INT64 1
139 # error "This platform does not support 8-byte integer"
143 typedef signed NCBI_INT8_TYPE
Int8;
146 typedef unsigned NCBI_INT8_TYPE
Uint8;
153 #define NCBI_BIG_TYPE Int8
154 #define SIZEOF_NCBI_BIG 8
155 #if (SIZEOF_LONG_DOUBLE > SIZEOF_NCBI_BIG)
156 # undef NCBI_BIG_TYPE
157 # undef SIZEOF_NCBI_BIG
158 # define NCBI_BIG_TYPE long double
159 # define SIZEOF_NCBI_BIG SIZEOF_LONG_DOUBLE
161 #if (SIZEOF_DOUBLE > SIZEOF_NCBI_BIG)
162 # undef NCBI_BIG_TYPE
163 # undef SIZEOF_NCBI_BIG
164 # define NCBI_BIG_TYPE double
165 # define SIZEOF_NCBI_BIG SIZEOF_DOUBLE
167 #if (SIZEOF_VOIDP > SIZEOF_NCBI_BIG)
168 # undef NCBI_BIG_TYPE
169 # undef SIZEOF_NCBI_BIG
170 # define NCBI_BIG_TYPE void*
171 # define SIZEOF_NCBI_BIG SIZEOF_VOIDP
183 #ifndef HAVE_INTPTR_T
184 # if SIZEOF_INT == SIZEOF_VOIDP
186 # elif SIZEOF_LONG == SIZEOF_VOIDP
188 # elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
191 # error No integer type is the same size as a pointer!
195 #ifndef HAVE_UINTPTR_T
196 # if SIZEOF_INT == SIZEOF_VOIDP
198 # elif SIZEOF_LONG == SIZEOF_VOIDP
200 # elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
203 # error No integer type is the same size as a pointer!
211 #ifdef HAVE_INTTYPES_H
212 # define NCBI_CONST_INT8(v) INT64_C(v)
213 # define NCBI_CONST_UINT8(v) UINT64_C(v)
214 # define NCBI_INT8_FORMAT_SPEC PRId64
215 # define NCBI_UINT8_FORMAT_SPEC PRIu64
216 #elif (SIZEOF_LONG == 8)
217 # define NCBI_CONST_INT8(v) v##L
218 # define NCBI_CONST_UINT8(v) v##UL
219 # define NCBI_INT8_FORMAT_SPEC "ld"
220 # define NCBI_UINT8_FORMAT_SPEC "lu"
221 #elif (SIZEOF_LONG_LONG == 8)
222 # define NCBI_CONST_INT8(v) v##LL
223 # define NCBI_CONST_UINT8(v) v##ULL
224 # if defined(__MINGW32__) || defined(__MINGW64__)
225 # define NCBI_INT8_FORMAT_SPEC "I64d"
226 # define NCBI_UINT8_FORMAT_SPEC "I64u"
228 # define NCBI_INT8_FORMAT_SPEC "lld"
229 # define NCBI_UINT8_FORMAT_SPEC "llu"
231 #elif defined(NCBI_USE_INT64)
232 # define NCBI_CONST_INT8(v) v##i64
233 # define NCBI_CONST_UINT8(v) v##ui64
234 # define NCBI_INT8_FORMAT_SPEC "I64d"
235 # define NCBI_UINT8_FORMAT_SPEC "I64u"
237 # define NCBI_CONST_INT8(v) v
238 # define NCBI_CONST_UINT8(v) v
239 # define NCBI_INT8_FORMAT_SPEC "d"
240 # define NCBI_UINT8_FORMAT_SPEC "u"
242 #if (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE)
243 # define NCBI_CONST_LONGDOUBLE(v) v##L
245 # define NCBI_CONST_LONGDOUBLE(v) v
252 #undef SIZEOF_NCBI_BIG
254 #undef NCBI_INT8_TYPE
signed char Schar
Alias for signed char.
uint8_t Uint1
1-byte (8-bit) unsigned integer
int16_t Int2
2-byte (16-bit) signed integer
int32_t Int4
4-byte (32-bit) signed integer
unsigned char Uchar
Alias for unsigned char.
Int8 Ncbi_BigScalar
Define large scalar type.
uint32_t Uint4
4-byte (32-bit) unsigned integer
uint16_t Uint2
2-byte (16-bit) unsigned integer
int64_t Int8
8-byte (64-bit) signed integer
uint64_t Uint8
8-byte (64-bit) unsigned integer
int8_t Int1
1-byte (8-bit) signed integer
Front end for a platform-specific configuration summary.