33 * 
44 * $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_stdint.h.html, _stdint.h) 
55 * 
6-  * Copyright: Copyright Sean Kelly 2005 - 2009.  
6+  * Copyright: Copyright Sean Kelly 2005 - 2018  
77 * License: Distributed under the 
88 *      $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). 
99 *    (See accompanying file LICENSE) 
1414
1515module  core.stdc.stdint ;
1616
17+ private  import  core.stdc.config ;
1718private  import  core.stdc.stddef ; //  for wchar_t
1819private  import  core.stdc.signal ; //  for sig_atomic_t
1920private  import  core.stdc.wchar_ ; //  for wint_t
@@ -27,85 +28,192 @@ extern (C):
2728nothrow :
2829@nogc :
2930
30- // /
31- alias  int8_t   = byte  ;
32- // /
33- alias  int16_t  = short ;
34- // /
35- alias  int32_t  = int   ;
36- // /
37- alias  int64_t  = long  ;
38- // /
39- static  if  (is (ucent ))
40-     alias  int128_t = cent ;
4131
42- // /
43- alias  uint8_t   = ubyte  ;
44- // /
45- alias  uint16_t  = ushort ;
46- // /
47- alias  uint32_t  = uint   ;
48- // /
49- alias  uint64_t  = ulong  ;
50- // /
5132static  if  (is (ucent ))
52-     alias  uint128_t = ucent ;
33+ {
34+     alias  int128_t = cent ;   // /
35+     alias  uint128_t = ucent ; // /
36+ }
5337
54- // /
55- alias  int_least8_t   = byte  ;
56- // /
57- alias  int_least16_t  = short ;
58- // /
59- alias  int_least32_t  = int   ;
60- // /
61- alias  int_least64_t  = long  ;
38+ version  (Win32 )
39+ {
40+     alias  int8_t    = byte ;      // /
41+     alias  int16_t   = short ;     // /
42+     alias  uint8_t   = ubyte ;     // /
43+     alias  uint16_t  = ushort ;    // /
44+     alias  int32_t   = cpp_long;  // /
45+     alias  uint32_t  = cpp_ulong; // /
46+     alias  int64_t   = long ;      // /
47+     alias  uint64_t  = ulong ;     // /
6248
63- // /
64- alias  uint_least8_t   = ubyte  ; 
65- // /
66- alias  uint_least16_t  = ushort ;
67- // /
68- alias  uint_least32_t  = uint   ; 
69- // /
70- alias  uint_least64_t  = ulong  ; 
49+      alias   int_least8_t    =  byte ;       // /
50+      alias  uint_least8_t   = ubyte ;      // / 
51+      alias   int_least16_t   =  short ;      // /
52+      alias  uint_least16_t  = ushort ;     // / 
53+      alias   int_least32_t   = cpp_long;   // /
54+      alias  uint_least32_t  = cpp_ulong;  // / 
55+      alias   int_least64_t   =  long ;       // /
56+      alias  uint_least64_t  = ulong ;      // / 
7157
72- // /
73- alias  int_fast8_t   = byte ; 
74- // /
75- alias  int_fast16_t  = int  ; 
76- // /
77- alias  int_fast32_t  = int  ; 
78- // /
79- alias  int_fast64_t  = long ; 
58+      alias   int_fast8_t    =  byte ;       // /
59+      alias  uint_fast8_t   = ubyte ;      // / 
60+      alias   int_fast16_t   =  int ;        // /
61+      alias  uint_fast16_t  = uint ;       // / 
62+      alias   int_fast32_t   = cpp_long;   // /
63+      alias  uint_fast32_t  = cpp_ulong;  // / 
64+      alias   int_fast64_t   =  long ;       // /
65+      alias  uint_fast64_t  = ulong ;      // / 
8066
81- // /
82- alias  uint_fast8_t   = ubyte ;
83- // /
84- alias  uint_fast16_t  = uint  ;
85- // /
86- alias  uint_fast32_t  = uint  ;
87- // /
88- alias  uint_fast64_t  = ulong ;
67+     alias  intptr_t   = int ;   // /
68+     alias  uintptr_t  = uint ;  // /
69+     alias  intmax_t   = long ;  // /
70+     alias  uintmax_t  = ulong ; // /
71+ }
72+ else version  (Win64 )
73+ {
74+     alias  int8_t    = byte ;   // /
75+     alias  int16_t   = short ;  // /
76+     alias  uint8_t   = ubyte ;  // /
77+     alias  uint16_t  = ushort ; // /
78+     alias  int32_t   = int ;    // /
79+     alias  uint32_t  = uint ;   // /
80+     alias  int64_t   = long ;   // /
81+     alias  uint64_t  = ulong ;  // /
82+ 
83+     alias  int_least8_t    = byte ;   // /
84+     alias  uint_least8_t   = ubyte ;  // /
85+     alias  int_least16_t   = short ;  // /
86+     alias  uint_least16_t  = ushort ; // /
87+     alias  int_least32_t   = int ;    // /
88+     alias  uint_least32_t  = uint ;   // /
89+     alias  int_least64_t   = long ;   // /
90+     alias  uint_least64_t  = ulong ;  // /
91+ 
92+     alias  int_fast8_t    = char ;  // /
93+     alias  uint_fast8_t   = ubyte ; // /
94+     alias  int_fast16_t   = int ;   // /
95+     alias  uint_fast16_t  = uint ;  // /
96+     alias  int_fast32_t   = int ;   // /
97+     alias  uint_fast32_t  = uint ;  // /
98+     alias  int_fast64_t   = long ;  // /
99+     alias  uint_fast64_t  = ulong ; // /
100+ 
101+     alias  intptr_t   = long ;  // /
102+     alias  uintptr_t  = ulong ; // /
103+     alias  intmax_t   = long ;  // /
104+     alias  uintmax_t  = ulong ; // /
105+ }
106+ else version  (OSX )
107+ {
108+     alias  int8_t    = byte ;   // /
109+     alias  int16_t   = short ;  // /
110+     alias  uint8_t   = ubyte ;  // /
111+     alias  uint16_t  = ushort ; // /
112+     alias  int32_t   = int ;    // /
113+     alias  uint32_t  = uint ;   // /
114+     alias  int64_t   = long ;   // /
115+     alias  uint64_t  = ulong ;  // /
89116
90- version ( D_LP64  )
117+     alias  int_least8_t    = byte ;   // /
118+     alias  uint_least8_t   = ubyte ;  // /
119+     alias  int_least16_t   = short ;  // /
120+     alias  uint_least16_t  = ushort ; // /
121+     alias  int_least32_t   = int ;    // /
122+     alias  uint_least32_t  = uint ;   // /
123+     alias  int_least64_t   = long ;   // /
124+     alias  uint_least64_t  = ulong ;  // /
125+ 
126+     alias  int_fast8_t    = byte ;  // /
127+     alias  uint_fast8_t   = ubyte ; // /
128+     alias  int_fast16_t   = int ;   // /
129+     alias  uint_fast16_t  = uint ;  // /
130+     alias  int_fast32_t   = int ;   // /
131+     alias  uint_fast32_t  = uint ;  // /
132+     alias  int_fast64_t   = long ;  // /
133+     alias  uint_fast64_t  = ulong ; // /
134+ 
135+     alias  intptr_t   = cpp_long;  // /
136+     alias  uintptr_t  = cpp_ulong; // /
137+     alias  intmax_t   = cpp_long;  // /
138+     alias  uintmax_t  = cpp_ulong; // /
139+ }
140+ else version  (Posix )
91141{
92-     // /
93-     alias  intptr_t   = long  ;
94-     // /
95-     alias  uintptr_t  = ulong ;
142+     version  (D_LP64 )
143+     {
144+         alias  int8_t    = byte ;      // /
145+         alias  int16_t   = short ;     // /
146+         alias  uint8_t   = ubyte ;     // /
147+         alias  uint16_t  = ushort ;    // /
148+         alias  int32_t   = int ;       // /
149+         alias  uint32_t  = uint ;      // /
150+         alias  int64_t   = cpp_long;  // /
151+         alias  uint64_t  = cpp_ulong; // /
152+ 
153+         alias  int_least8_t    = byte ;      // /
154+         alias  uint_least8_t   = ubyte ;     // /
155+         alias  int_least16_t   = short ;     // /
156+         alias  uint_least16_t  = ushort ;    // /
157+         alias  int_least32_t   = int ;       // /
158+         alias  uint_least32_t  = uint ;      // /
159+         alias  int_least64_t   = cpp_long;  // /
160+         alias  uint_least64_t  = cpp_ulong; // /
161+ 
162+         alias  int_fast8_t    = byte ;      // /
163+         alias  uint_fast8_t   = ubyte ;     // /
164+         alias  int_fast16_t   = cpp_long;  // /
165+         alias  uint_fast16_t  = cpp_ulong; // /
166+         alias  int_fast32_t   = cpp_long;  // /
167+         alias  uint_fast32_t  = cpp_ulong; // /
168+         alias  int_fast64_t   = cpp_long;  // /
169+         alias  uint_fast64_t  = cpp_ulong; // /
170+ 
171+         alias  intptr_t   = cpp_long;  // /
172+         alias  uintptr_t  = cpp_ulong; // /
173+         alias  intmax_t   = cpp_long;  // /
174+         alias  uintmax_t  = cpp_ulong; // /
175+     }
176+     else 
177+     {
178+         alias  int8_t    = byte ;   // /
179+         alias  int16_t   = short ;  // /
180+         alias  uint8_t   = ubyte ;  // /
181+         alias  uint16_t  = ushort ; // /
182+         alias  int32_t   = int ;    // /
183+         alias  uint32_t  = uint ;   // /
184+         alias  int64_t   = long ;   // /
185+         alias  uint64_t  = ulong ;  // /
186+ 
187+         alias  int_least8_t    = byte ;   // /
188+         alias  uint_least8_t   = ubyte ;  // /
189+         alias  int_least16_t   = short ;  // /
190+         alias  uint_least16_t  = ushort ; // /
191+         alias  int_least32_t   = int ;    // /
192+         alias  uint_least32_t  = uint ;   // /
193+         alias  int_least64_t   = long ;   // /
194+         alias  uint_least64_t  = ulong ;  // /
195+ 
196+         alias  int_fast8_t    = byte ;  // /
197+         alias  uint_fast8_t   = ubyte ; // /
198+         alias  int_fast16_t   = int ;   // /
199+         alias  uint_fast16_t  = uint ;  // /
200+         alias  int_fast32_t   = int ;   // /
201+         alias  uint_fast32_t  = uint ;  // /
202+         alias  int_fast64_t   = long ;  // /
203+         alias  uint_fast64_t  = ulong ; // /
204+ 
205+         alias  intptr_t   = int  ;  // /
206+         alias  uintptr_t  = uint ;  // /
207+         alias  intmax_t   = long ;  // /
208+         alias  uintmax_t  = ulong ; // /
209+     }
96210}
97211else 
98212{
99-     // /
100-     alias  intptr_t   = int  ;
101-     // /
102-     alias  uintptr_t  = uint ;
213+     static  assert (0 );
103214}
104215
105- // /
106- alias  intmax_t   = long  ;
107- // /
108- alias  uintmax_t  = ulong ;
216+ 
109217
110218// /
111219enum  int8_t    INT8_MIN   = int8_t .min;
0 commit comments