From 74155c82497dde9ecadaef5fb38c204637b73ab7 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 18 May 2018 22:35:30 +0200 Subject: [PATCH 1/2] core.stdc.config: Add cpp_(u)longlong aliases --- src/core/stdc/config.d | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index 257999ebb8..0ec3080384 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -57,6 +57,18 @@ version (StdDdoc) */ alias cpp_ulong = c_ulong; + /*** + * Used for a signed integer type that corresponds in size and mangling to the associated + * C++ compiler's `long long` type. + */ + alias cpp_longlong = long; + + /*** + * Used for an unsigned integer type that corresponds in size and mangling to the associated + * C++ compiler's `unsigned long long` type. + */ + alias cpp_ulonglong = ulong; + /*** * Used for a floating point type that corresponds in size and mangling to the associated * C++ compiler's `long double` type. @@ -97,6 +109,9 @@ version( Windows ) alias int c_long; alias uint c_ulong; + + alias long cpp_longlong; + alias ulong cpp_ulonglong; } else version( Posix ) { @@ -105,11 +120,17 @@ else version( Posix ) enum __c_long : long; enum __c_ulong : ulong; + enum __c_longlong : long; + enum __c_ulonglong : ulong; + alias __c_long cpp_long; alias __c_ulong cpp_ulong; alias long c_long; alias ulong c_ulong; + + alias __c_longlong cpp_longlong; + alias __c_ulonglong cpp_ulonglong; } else { @@ -121,6 +142,9 @@ else version( Posix ) alias int c_long; alias uint c_ulong; + + alias long cpp_longlong; + alias ulong cpp_ulonglong; } } From f18f6d566bd0dcac29e9dbc41ba28c09f2545e55 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 18 May 2018 22:36:11 +0200 Subject: [PATCH 2/2] core.stdc.config: Fix cpp_ptrdiff_t alias for 32-bit macOS It's `int`, not `long`, inconsistent with size_t being `unsigned long`. --- src/core/stdc/config.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index 0ec3080384..81d2926303 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -201,7 +201,10 @@ static assert(is(c_long_double), "c_long_double needs to be declared for this pl version (Darwin) { alias cpp_size_t = cpp_ulong; - alias cpp_ptrdiff_t = cpp_long; + version (D_LP64) + alias cpp_ptrdiff_t = cpp_long; + else + alias cpp_ptrdiff_t = ptrdiff_t; } else {