diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-09-24 19:06:33 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-09-24 19:06:33 -0700 |
commit | 1ea039eea38dad37c5b0c836cf98829bad6013ce (patch) | |
tree | 6d851de99c00b4aa1c45624df570b5cb7f89fed5 /system/include/libcxx/cstddef | |
parent | dd0230c9cf09a7b19712a4acefe0ae27ea40ea85 (diff) |
include libcxx
Diffstat (limited to 'system/include/libcxx/cstddef')
-rw-r--r-- | system/include/libcxx/cstddef | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/system/include/libcxx/cstddef b/system/include/libcxx/cstddef new file mode 100644 index 00000000..b851ea00 --- /dev/null +++ b/system/include/libcxx/cstddef @@ -0,0 +1,100 @@ +// -*- C++ -*- +//===--------------------------- cstddef ----------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_CSTDDEF +#define _LIBCPP_CSTDDEF + +/* + cstddef synopsis + +Macros: + + offsetof(type,member-designator) + NULL + +namespace std +{ + +Types: + + ptrdiff_t + size_t + max_align_t + nullptr_t + +} // std + +*/ + +#include <__config> + +#ifdef __GLIBC__ +#define __need_NULL +#define __need_ptrdiff_t +#define __need_size_t +#endif // __GLIBC__ + +#include <stddef.h> + +#pragma GCC system_header + +_LIBCPP_BEGIN_NAMESPACE_STD + +using ::ptrdiff_t; +using ::size_t; + +typedef long double max_align_t; + +#ifdef _LIBCPP_HAS_NO_NULLPTR + +struct _LIBCPP_VISIBLE nullptr_t +{ + void* _; + + struct __nat {int __for_bool_;}; + + _LIBCPP_ALWAYS_INLINE nullptr_t(int __nat::*) {} + + _LIBCPP_ALWAYS_INLINE operator int __nat::*() const {return 0;} + + template <class _Tp> + _LIBCPP_ALWAYS_INLINE + operator _Tp* () const {return 0;} + + template <class _Tp, class _Up> + _LIBCPP_ALWAYS_INLINE + operator _Tp _Up::* () const {return 0;} + + friend _LIBCPP_ALWAYS_INLINE bool operator==(nullptr_t, nullptr_t) {return true;} + friend _LIBCPP_ALWAYS_INLINE bool operator!=(nullptr_t, nullptr_t) {return false;} + friend _LIBCPP_ALWAYS_INLINE bool operator<(nullptr_t, nullptr_t) {return false;} + friend _LIBCPP_ALWAYS_INLINE bool operator<=(nullptr_t, nullptr_t) {return true;} + friend _LIBCPP_ALWAYS_INLINE bool operator>(nullptr_t, nullptr_t) {return false;} + friend _LIBCPP_ALWAYS_INLINE bool operator>=(nullptr_t, nullptr_t) {return true;} +}; + +inline _LIBCPP_ALWAYS_INLINE nullptr_t __get_nullptr_t() {return nullptr_t(0);} + +#define nullptr _VSTD::__get_nullptr_t() + +#endif // _LIBCPP_HAS_NO_NULLPTR + +_LIBCPP_END_NAMESPACE_STD + +#ifndef _LIBCPP_HAS_NO_NULLPTR + +namespace std +{ + typedef decltype(nullptr) nullptr_t; +} + +#endif // _LIBCPP_HAS_NO_NULLPTR + +#endif // _LIBCPP_CSTDDEF |