1// -*- C++ -*-
2//===----------------------------------------------------------------------===//
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
25Macros:
26
27    offsetof(type,member-designator)
28    NULL
29
30Types:
31
32    ptrdiff_t
33    size_t
34    max_align_t // C++11
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#  if __has_include_next(<stddef.h>)
46#    include_next <stddef.h>
47#  endif
48
49#ifdef __cplusplus
50    typedef decltype(nullptr) nullptr_t;
51#endif
52
53#endif // _LIBCPP_STDDEF_H
54