1 | // -*- C++ -*- |
2 | //===--------------------------- stddef.h ---------------------------------===// |
3 | // |
4 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
5 | // See https://llvm.org/LICENSE.txt for license information. |
6 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
7 | // |
8 | //===----------------------------------------------------------------------===// |
9 | |
10 | #if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ |
11 | defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) |
12 | |
13 | #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
14 | #pragma GCC system_header |
15 | #endif |
16 | |
17 | #include_next <stddef.h> |
18 | |
19 | #elif !defined(_LIBCPP_STDDEF_H) |
20 | #define _LIBCPP_STDDEF_H |
21 | |
22 | /* |
23 | stddef.h synopsis |
24 | |
25 | Macros: |
26 | |
27 | offsetof(type,member-designator) |
28 | NULL |
29 | |
30 | Types: |
31 | |
32 | ptrdiff_t |
33 | size_t |
34 | max_align_t |
35 | nullptr_t |
36 | |
37 | */ |
38 | |
39 | #include <__config> |
40 | |
41 | #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
42 | #pragma GCC system_header |
43 | #endif |
44 | |
45 | #include_next <stddef.h> |
46 | |
47 | #ifdef __cplusplus |
48 | |
49 | extern "C++" { |
50 | #include <__nullptr> |
51 | using std::nullptr_t; |
52 | } |
53 | |
54 | // Re-use the compiler's <stddef.h> max_align_t where possible. |
55 | #if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ |
56 | !defined(__DEFINED_max_align_t) && !defined(__NetBSD__) |
57 | typedef long double max_align_t; |
58 | #endif |
59 | |
60 | #endif |
61 | |
62 | #endif // _LIBCPP_STDDEF_H |
63 | |