stddef.h revision fc8f0e14ad142ed811e90fbd9a30e419e301c717
1f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek/*===---- stddef.h - Basic type definitions --------------------------------===
2f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek *
3f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * Copyright (c) 2008 Eli Friedman
4f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek *
5f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * Permission is hereby granted, free of charge, to any person obtaining a copy
6f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * of this software and associated documentation files (the "Software"), to deal
7f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * in the Software without restriction, including without limitation the rights
8f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * copies of the Software, and to permit persons to whom the Software is
10f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * furnished to do so, subject to the following conditions:
11f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek *
12f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * The above copyright notice and this permission notice shall be included in
13f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * all copies or substantial portions of the Software.
14e6348c336fecc8da9288ea367375a1b1cd2358d2Argyrios Kyrtzidis *
15f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17802be99a6817aba6edb166b93c133da4358aa783Zhongxing Xu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19efceabd2380f49306bc0229583458e93b062094bDaniel Dunbar * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20efceabd2380f49306bc0229583458e93b062094bDaniel Dunbar * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2127af04bcca46f8a3374586be1301477f9123f5e1Argyrios Kyrtzidis * THE SOFTWARE.
2243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis *
2321142581d55918beed544a757e4af3bb865b1812Ted Kremenek *===-----------------------------------------------------------------------===
249b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek */
259b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek
269b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek#ifndef __STDDEF_H
279b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek#define __STDDEF_H
289b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek
29a7af5ea88a6c5bdf87497cca6c20831e8c546751Argyrios Kyrtzidis#ifndef _PTRDIFF_T
30efceabd2380f49306bc0229583458e93b062094bDaniel Dunbar#define _PTRDIFF_T
31efceabd2380f49306bc0229583458e93b062094bDaniel Dunbartypedef __typeof__(((int*)0)-((int*)0)) ptrdiff_t;
329b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#endif
33efceabd2380f49306bc0229583458e93b062094bDaniel Dunbar#ifndef _SIZE_T
34f8ce6991f41d55b6e8526b7a7919771428e2b181Ted Kremenek#define _SIZE_T
3503013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencertypedef __typeof__(sizeof(int)) size_t;
3603013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer#endif
376cb7c1a43b0c8f739d1f54b7fdae5ede86033496Benjamin Kramer#ifndef __cplusplus
38db09a4dee28a4515438af60f2d2b4a83e4965c31Ted Kremenek#ifndef _WCHAR_T
39f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek#define _WCHAR_T
409ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremenektypedef __WCHAR_TYPE__ wchar_t;
41f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek#endif
42c5619d901a68dc27a9e310a6a831f03efebcd950Zhongxing Xu#endif
43ff944a8c481d6c0f1ad2633e4be9bf8b1dd2a09fZhongxing Xu
44be1fe1eb12a1cb91c8e3a9fcc2db4dfe989def6cTed Kremenek#undef NULL
45f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek#ifdef __cplusplus
46f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek#undef __null  // VC++ hack.
47f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek#define NULL __null
48ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikie#else
49ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikie#define NULL ((void*)0)
50efceabd2380f49306bc0229583458e93b062094bDaniel Dunbar#endif
51ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikie
52ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikie#define offsetof(t, d) __builtin_offsetof(t, d)
53ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikie
54f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek#endif /* __STDDEF_H */
55f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek
56f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use
57f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */
58f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek#if defined(__need_wint_t)
59f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek#if !defined(_WINT_T)
60f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenek#define _WINT_T
61f4381fddf152a63e1ac97185293c47ec0ac2f1a6Ted Kremenektypedef __WINT_TYPE__ wint_t;
62ed8afacb8118b71bcfa8017059e51da325e7691bZhongxing Xu#endif /* _WINT_T */
63ed8afacb8118b71bcfa8017059e51da325e7691bZhongxing Xu#undef __need_wint_t
649c378f705405d37f49795d5e915989de774fe11fTed Kremenek#endif /* __need_wint_t */
651d9cbeb76cf4c36acf5545028e2b2ac207086442Ted Kremenek