Chameleon

Chameleon Svn Source Tree

Root/tags/2.0/i386/include/stdint.h

Source at commit 1808 created 12 years 3 months ago.
By blackosx, Revise layout of package installer 'Welcome' file so it looks cleaner. Change the copyright notice to begin from 2009 as seen in the Chameleon 2.0 r431 installer. Should this date be set earlier?
1/*
2 * Copyright (c) 2000, 2001, 2003, 2004, 2008 Apple Computer, Inc.
3 * All rights reserved.
4 */
5
6#ifndef _STDINT_H_
7#define _STDINT_H_
8
9#if __LP64__
10#define __WORDSIZE 64
11#else
12#define __WORDSIZE 32
13#endif
14
15/* from ISO/IEC 988:1999 spec */
16
17/* 7.18.1.1 Exact-width integer types */
18#ifndef _INT8_T
19#define _INT8_T
20typedef signed char int8_t;
21#endif /*_INT8_T */
22
23#ifndef _INT16_T
24#define _INT16_T
25typedef short int16_t;
26#endif /* _INT16_T */
27
28#ifndef _INT32_T
29#define _INT32_T
30typedef int int32_t;
31#endif /* _INT32_T */
32
33#ifndef _INT64_T
34#define _INT64_T
35typedef long long int64_t;
36#endif /* _INT64_T */
37
38#ifndef _UINT8_T
39#define _UINT8_T
40typedef unsigned char uint8_t;
41#endif /*_UINT8_T */
42
43#ifndef _UINT16_T
44#define _UINT16_T
45typedef unsigned short uint16_t;
46#endif /* _UINT16_T */
47
48#ifndef _UINT32_T
49#define _UINT32_T
50typedef unsigned int uint32_t;
51#endif /* _UINT32_T */
52
53#ifndef _UINT64_T
54#define _UINT64_T
55typedef unsigned long long uint64_t;
56#endif /* _UINT64_T */
57
58/* 7.18.1.2 Minimum-width integer types */
59typedef int8_t int_least8_t;
60typedef int16_t int_least16_t;
61typedef int32_t int_least32_t;
62typedef int64_t int_least64_t;
63typedef uint8_t uint_least8_t;
64typedef uint16_t uint_least16_t;
65typedef uint32_t uint_least32_t;
66typedef uint64_t uint_least64_t;
67
68
69/* 7.18.1.3 Fastest-width integer types */
70typedef int8_t int_fast8_t;
71typedef int16_t int_fast16_t;
72typedef int32_t int_fast32_t;
73typedef int64_t int_fast64_t;
74typedef uint8_t uint_fast8_t;
75typedef uint16_t uint_fast16_t;
76typedef uint32_t uint_fast32_t;
77typedef uint64_t uint_fast64_t;
78
79
80/* 7.18.1.4 Integer types capable of holding object pointers */
81
82#ifndef _INTPTR_T
83#define _INTPTR_T
84typedef long intptr_t;
85#endif /* _INTPTR_T */
86
87#ifndef _UINTPTR_T
88#define _UINTPTR_T
89typedef unsigned long uintptr_t;
90#endif /* _UINTPTR_T */
91
92
93/* 7.18.1.5 Greatest-width integer types */
94#ifndef _INTMAX_T
95#define _INTMAX_T
96#ifdef __INTMAX_TYPE__
97typedef __INTMAX_TYPE__ intmax_t;
98#else /* __INTMAX_TYPE__ */
99typedef long long intmax_t;
100#endif /* __INTMAX_TYPE__ */
101#endif /* _INTMAX_T */
102
103#ifndef _UINTMAX_T
104#define _UINTMAX_T
105#ifdef __UINTMAX_TYPE__
106typedef __UINTMAX_TYPE__ uintmax_t;
107#else /* __UINTMAX_TYPE__ */
108typedef unsigned long long uintmax_t;
109#endif /* __UINTMAX_TYPE__ */
110#endif /* _UINTMAX_T */
111
112/* 7.18.2 Limits of specified-width integer types:
113 * These #defines specify the minimum and maximum limits
114 * of each of the types declared above.
115 */
116
117
118/* 7.18.2.1 Limits of exact-width integer types */
119#define INT8_MAX 127
120#define INT16_MAX 32767
121#define INT32_MAX 2147483647
122#define INT64_MAX 9223372036854775807LL
123
124#define INT8_MIN -128
125#define INT16_MIN -32768
126 /*
127 Note: the literal "most negative int" cannot be written in C --
128 the rules in the standard (section 6.4.4.1 in C99) will give it
129 an unsigned type, so INT32_MIN (and the most negative member of
130 any larger signed type) must be written via a constant expression.
131 */
132#define INT32_MIN (-INT32_MAX-1)
133#define INT64_MIN (-INT64_MAX-1)
134
135#define UINT8_MAX 255
136#define UINT16_MAX 65535
137#define UINT32_MAX 4294967295U
138#define UINT64_MAX 18446744073709551615ULL
139
140/* 7.18.2.2 Limits of minimum-width integer types */
141#define INT_LEAST8_MIN INT8_MIN
142#define INT_LEAST16_MIN INT16_MIN
143#define INT_LEAST32_MIN INT32_MIN
144#define INT_LEAST64_MIN INT64_MIN
145
146#define INT_LEAST8_MAX INT8_MAX
147#define INT_LEAST16_MAX INT16_MAX
148#define INT_LEAST32_MAX INT32_MAX
149#define INT_LEAST64_MAX INT64_MAX
150
151#define UINT_LEAST8_MAX UINT8_MAX
152#define UINT_LEAST16_MAX UINT16_MAX
153#define UINT_LEAST32_MAX UINT32_MAX
154#define UINT_LEAST64_MAX UINT64_MAX
155
156/* 7.18.2.3 Limits of fastest minimum-width integer types */
157#define INT_FAST8_MIN INT8_MIN
158#define INT_FAST16_MIN INT16_MIN
159#define INT_FAST32_MIN INT32_MIN
160#define INT_FAST64_MIN INT64_MIN
161
162#define INT_FAST8_MAX INT8_MAX
163#define INT_FAST16_MAX INT16_MAX
164#define INT_FAST32_MAX INT32_MAX
165#define INT_FAST64_MAX INT64_MAX
166
167#define UINT_FAST8_MAX UINT8_MAX
168#define UINT_FAST16_MAX UINT16_MAX
169#define UINT_FAST32_MAX UINT32_MAX
170#define UINT_FAST64_MAX UINT64_MAX
171
172/* 7.18.2.4 Limits of integer types capable of holding object pointers */
173
174#if __WORDSIZE == 64
175#define INTPTR_MIN INT64_MIN
176#define INTPTR_MAX INT64_MAX
177#else
178#define INTPTR_MIN INT32_MIN
179#define INTPTR_MAX INT32_MAX
180#endif
181
182#if __WORDSIZE == 64
183#define UINTPTR_MAX UINT64_MAX
184#else
185#define UINTPTR_MAX UINT32_MAX
186#endif
187
188/* 7.18.2.5 Limits of greatest-width integer types */
189#define INTMAX_MIN INT64_MIN
190#define INTMAX_MAX INT64_MAX
191
192#define UINTMAX_MAX UINT64_MAX
193
194/* 7.18.3 "Other" */
195#if __WORDSIZE == 64
196#define PTRDIFF_MIN INT64_MIN
197#define PTRDIFF_MAX INT64_MAX
198#else
199#define PTRDIFF_MIN INT32_MIN
200#define PTRDIFF_MAX INT32_MAX
201#endif
202
203/* We have no sig_atomic_t yet, so no SIG_ATOMIC_{MIN,MAX}.
204 Should end up being {-127,127} or {0,255} ... or bigger.
205 My bet would be on one of {U}INT32_{MIN,MAX}. */
206
207#if __WORDSIZE == 64
208#define SIZE_MAX UINT64_MAX
209#else
210#define SIZE_MAX UINT32_MAX
211#endif
212
213#ifndef WCHAR_MAX
214# ifdef __WCHAR_MAX__
215# define WCHAR_MAX __WCHAR_MAX__
216# else
217# define WCHAR_MAX 0x7fffffff
218# endif
219#endif
220
221/* WCHAR_MIN should be 0 if wchar_t is an unsigned type and
222 (-WCHAR_MAX-1) if wchar_t is a signed type. Unfortunately,
223 it turns out that -fshort-wchar changes the signedness of
224 the type. */
225#ifndef WCHAR_MIN
226# if WCHAR_MAX == 0xffff
227# define WCHAR_MIN 0
228# else
229# define WCHAR_MIN (-WCHAR_MAX-1)
230# endif
231#endif
232
233#define WINT_MIN INT32_MIN
234#define WINT_MAX INT32_MAX
235
236#define SIG_ATOMIC_MIN INT32_MIN
237#define SIG_ATOMIC_MAX INT32_MAX
238
239/* 7.18.4 Macros for integer constants */
240#define INT8_C(v) (v)
241#define INT16_C(v) (v)
242#define INT32_C(v) (v)
243#define INT64_C(v) (v ## LL)
244
245#define UINT8_C(v) (v ## U)
246#define UINT16_C(v) (v ## U)
247#define UINT32_C(v) (v ## U)
248#define UINT64_C(v) (v ## ULL)
249
250#define INTMAX_C(v) (v ## LL)
251#define UINTMAX_C(v) (v ## ULL)
252
253#endif /* _STDINT_H_ */
254

Archive Download this file

Revision: 1808