@@ -57,6 +57,18 @@ version (StdDdoc)
57
57
*/
58
58
alias cpp_ulong = c_ulong;
59
59
60
+ /* **
61
+ * Used for a signed integer type that corresponds in size and mangling to the associated
62
+ * C++ compiler's `long long` type.
63
+ */
64
+ alias cpp_longlong = long ;
65
+
66
+ /* **
67
+ * Used for an unsigned integer type that corresponds in size and mangling to the associated
68
+ * C++ compiler's `unsigned long long` type.
69
+ */
70
+ alias cpp_ulonglong = ulong ;
71
+
60
72
/* **
61
73
* Used for a floating point type that corresponds in size and mangling to the associated
62
74
* C++ compiler's `long double` type.
@@ -97,6 +109,9 @@ version( Windows )
97
109
98
110
alias int c_long;
99
111
alias uint c_ulong;
112
+
113
+ alias long cpp_longlong;
114
+ alias ulong cpp_ulonglong;
100
115
}
101
116
else version ( Posix )
102
117
{
@@ -105,11 +120,17 @@ else version( Posix )
105
120
enum __c_long : long ;
106
121
enum __c_ulong : ulong ;
107
122
123
+ enum __c_longlong : long ;
124
+ enum __c_ulonglong : ulong ;
125
+
108
126
alias __c_long cpp_long;
109
127
alias __c_ulong cpp_ulong;
110
128
111
129
alias long c_long;
112
130
alias ulong c_ulong;
131
+
132
+ alias __c_longlong cpp_longlong;
133
+ alias __c_ulonglong cpp_ulonglong;
113
134
}
114
135
else
115
136
{
@@ -121,6 +142,9 @@ else version( Posix )
121
142
122
143
alias int c_long;
123
144
alias uint c_ulong;
145
+
146
+ alias long cpp_longlong;
147
+ alias ulong cpp_ulonglong;
124
148
}
125
149
}
126
150
@@ -177,7 +201,10 @@ static assert(is(c_long_double), "c_long_double needs to be declared for this pl
177
201
version (Darwin)
178
202
{
179
203
alias cpp_size_t = cpp_ulong;
180
- alias cpp_ptrdiff_t = cpp_long;
204
+ version (D_LP64 )
205
+ alias cpp_ptrdiff_t = cpp_long;
206
+ else
207
+ alias cpp_ptrdiff_t = ptrdiff_t ;
181
208
}
182
209
else
183
210
{
0 commit comments