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