Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
stdint.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2// ISO C9x compliant stdint.h for Microsoft Visual Studio
3// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
4//
5// Copyright (c) 2006-2013 Alexander Chemeris
6//
7// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions are met:
9//
10// 1. Redistributions of source code must retain the above copyright notice,
11// this list of conditions and the following disclaimer.
12//
13// 2. Redistributions in binary form must reproduce the above copyright
14// notice, this list of conditions and the following disclaimer in the
15// documentation and/or other materials provided with the distribution.
16//
17// 3. Neither the name of the product nor the names of its contributors may
18// be used to endorse or promote products derived from this software
19// without specific prior written permission.
20//
21// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
22// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
24// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31//
33
34// The above software in this distribution may have been modified by
35// THL A29 Limited ("Tencent Modifications").
36// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
37
38#ifndef _MSC_VER // [
39#error "Use this header only with Microsoft Visual C++ compilers!"
40#endif // _MSC_VER ]
41
42#ifndef _MSC_STDINT_H_ // [
43#define _MSC_STDINT_H_
44
45#if _MSC_VER > 1000
46#pragma once
47#endif
48
49// miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010.
50#if _MSC_VER >= 1600 // [
51#include <stdint.h>
52
53#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
54
55#undef INT8_C
56#undef INT16_C
57#undef INT32_C
58#undef INT64_C
59#undef UINT8_C
60#undef UINT16_C
61#undef UINT32_C
62#undef UINT64_C
63
64// 7.18.4.1 Macros for minimum-width integer constants
65
66#define INT8_C(val) val##i8
67#define INT16_C(val) val##i16
68#define INT32_C(val) val##i32
69#define INT64_C(val) val##i64
70
71#define UINT8_C(val) val##ui8
72#define UINT16_C(val) val##ui16
73#define UINT32_C(val) val##ui32
74#define UINT64_C(val) val##ui64
75
76// 7.18.4.2 Macros for greatest-width integer constants
77// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
78// Check out Issue 9 for the details.
79#ifndef INTMAX_C // [
80# define INTMAX_C INT64_C
81#endif // INTMAX_C ]
82#ifndef UINTMAX_C // [
83# define UINTMAX_C UINT64_C
84#endif // UINTMAX_C ]
85
86#endif // __STDC_CONSTANT_MACROS ]
87
88#else // ] _MSC_VER >= 1700 [
89
90#include <limits.h>
91
92// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
93// compiling for ARM we have to wrap <wchar.h> include with 'extern "C++" {}'
94// or compiler would give many errors like this:
95// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
96#if defined(__cplusplus) && !defined(_M_ARM)
97extern "C" {
98#endif
99# include <wchar.h>
100#if defined(__cplusplus) && !defined(_M_ARM)
101}
102#endif
103
104// Define _W64 macros to mark types changing their size, like intptr_t.
105#ifndef _W64
106# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
107# define _W64 __w64
108# else
109# define _W64
110# endif
111#endif
112
113
114// 7.18.1 Integer types
115
116// 7.18.1.1 Exact-width integer types
117
118// Visual Studio 6 and Embedded Visual C++ 4 doesn't
119// realize that, e.g. char has the same size as __int8
120// so we give up on __intX for them.
121#if (_MSC_VER < 1300)
122 typedef signed char int8_t;
123 typedef signed short int16_t;
124 typedef signed int int32_t;
125 typedef unsigned char uint8_t;
126 typedef unsigned short uint16_t;
127 typedef unsigned int uint32_t;
128#else
129 typedef signed __int8 int8_t;
130 typedef signed __int16 int16_t;
131 typedef signed __int32 int32_t;
132 typedef unsigned __int8 uint8_t;
133 typedef unsigned __int16 uint16_t;
134 typedef unsigned __int32 uint32_t;
135#endif
136typedef signed __int64 int64_t;
137typedef unsigned __int64 uint64_t;
138
139
140// 7.18.1.2 Minimum-width integer types
141typedef int8_t int_least8_t;
142typedef int16_t int_least16_t;
143typedef int32_t int_least32_t;
144typedef int64_t int_least64_t;
145typedef uint8_t uint_least8_t;
146typedef uint16_t uint_least16_t;
149
150// 7.18.1.3 Fastest minimum-width integer types
151typedef int8_t int_fast8_t;
152typedef int16_t int_fast16_t;
153typedef int32_t int_fast32_t;
154typedef int64_t int_fast64_t;
155typedef uint8_t uint_fast8_t;
156typedef uint16_t uint_fast16_t;
157typedef uint32_t uint_fast32_t;
158typedef uint64_t uint_fast64_t;
159
160// 7.18.1.4 Integer types capable of holding object pointers
161#ifdef _WIN64 // [
162 typedef signed __int64 intptr_t;
163 typedef unsigned __int64 uintptr_t;
164#else // _WIN64 ][
165 typedef _W64 signed int intptr_t;
166 typedef _W64 unsigned int uintptr_t;
167#endif // _WIN64 ]
168
169// 7.18.1.5 Greatest-width integer types
170typedef int64_t intmax_t;
171typedef uint64_t uintmax_t;
172
173
174// 7.18.2 Limits of specified-width integer types
175
176#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
177
178// 7.18.2.1 Limits of exact-width integer types
179#define INT8_MIN ((int8_t)_I8_MIN)
180#define INT8_MAX _I8_MAX
181#define INT16_MIN ((int16_t)_I16_MIN)
182#define INT16_MAX _I16_MAX
183#define INT32_MIN ((int32_t)_I32_MIN)
184#define INT32_MAX _I32_MAX
185#define INT64_MIN ((int64_t)_I64_MIN)
186#define INT64_MAX _I64_MAX
187#define UINT8_MAX _UI8_MAX
188#define UINT16_MAX _UI16_MAX
189#define UINT32_MAX _UI32_MAX
190#define UINT64_MAX _UI64_MAX
191
192// 7.18.2.2 Limits of minimum-width integer types
193#define INT_LEAST8_MIN INT8_MIN
194#define INT_LEAST8_MAX INT8_MAX
195#define INT_LEAST16_MIN INT16_MIN
196#define INT_LEAST16_MAX INT16_MAX
197#define INT_LEAST32_MIN INT32_MIN
198#define INT_LEAST32_MAX INT32_MAX
199#define INT_LEAST64_MIN INT64_MIN
200#define INT_LEAST64_MAX INT64_MAX
201#define UINT_LEAST8_MAX UINT8_MAX
202#define UINT_LEAST16_MAX UINT16_MAX
203#define UINT_LEAST32_MAX UINT32_MAX
204#define UINT_LEAST64_MAX UINT64_MAX
205
206// 7.18.2.3 Limits of fastest minimum-width integer types
207#define INT_FAST8_MIN INT8_MIN
208#define INT_FAST8_MAX INT8_MAX
209#define INT_FAST16_MIN INT16_MIN
210#define INT_FAST16_MAX INT16_MAX
211#define INT_FAST32_MIN INT32_MIN
212#define INT_FAST32_MAX INT32_MAX
213#define INT_FAST64_MIN INT64_MIN
214#define INT_FAST64_MAX INT64_MAX
215#define UINT_FAST8_MAX UINT8_MAX
216#define UINT_FAST16_MAX UINT16_MAX
217#define UINT_FAST32_MAX UINT32_MAX
218#define UINT_FAST64_MAX UINT64_MAX
219
220// 7.18.2.4 Limits of integer types capable of holding object pointers
221#ifdef _WIN64 // [
222# define INTPTR_MIN INT64_MIN
223# define INTPTR_MAX INT64_MAX
224# define UINTPTR_MAX UINT64_MAX
225#else // _WIN64 ][
226# define INTPTR_MIN INT32_MIN
227# define INTPTR_MAX INT32_MAX
228# define UINTPTR_MAX UINT32_MAX
229#endif // _WIN64 ]
230
231// 7.18.2.5 Limits of greatest-width integer types
232#define INTMAX_MIN INT64_MIN
233#define INTMAX_MAX INT64_MAX
234#define UINTMAX_MAX UINT64_MAX
235
236// 7.18.3 Limits of other integer types
237
238#ifdef _WIN64 // [
239# define PTRDIFF_MIN _I64_MIN
240# define PTRDIFF_MAX _I64_MAX
241#else // _WIN64 ][
242# define PTRDIFF_MIN _I32_MIN
243# define PTRDIFF_MAX _I32_MAX
244#endif // _WIN64 ]
245
246#define SIG_ATOMIC_MIN INT_MIN
247#define SIG_ATOMIC_MAX INT_MAX
248
249#ifndef SIZE_MAX // [
250# ifdef _WIN64 // [
251# define SIZE_MAX _UI64_MAX
252# else // _WIN64 ][
253# define SIZE_MAX _UI32_MAX
254# endif // _WIN64 ]
255#endif // SIZE_MAX ]
256
257// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
258#ifndef WCHAR_MIN // [
259# define WCHAR_MIN 0
260#endif // WCHAR_MIN ]
261#ifndef WCHAR_MAX // [
262# define WCHAR_MAX _UI16_MAX
263#endif // WCHAR_MAX ]
264
265#define WINT_MIN 0
266#define WINT_MAX _UI16_MAX
267
268#endif // __STDC_LIMIT_MACROS ]
269
270
271// 7.18.4 Limits of other integer types
272
273#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
274
275// 7.18.4.1 Macros for minimum-width integer constants
276
277#define INT8_C(val) val##i8
278#define INT16_C(val) val##i16
279#define INT32_C(val) val##i32
280#define INT64_C(val) val##i64
281
282#define UINT8_C(val) val##ui8
283#define UINT16_C(val) val##ui16
284#define UINT32_C(val) val##ui32
285#define UINT64_C(val) val##ui64
286
287// 7.18.4.2 Macros for greatest-width integer constants
288// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
289// Check out Issue 9 for the details.
290#ifndef INTMAX_C // [
291# define INTMAX_C INT64_C
292#endif // INTMAX_C ]
293#ifndef UINTMAX_C // [
294# define UINTMAX_C UINT64_C
295#endif // UINTMAX_C ]
296
297#endif // __STDC_CONSTANT_MACROS ]
298
299#endif // _MSC_VER >= 1600 ]
300
301#endif // _MSC_STDINT_H_ ]
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120