1 /*
2  * Public domain
3  * sys/types.h compatibility shim
4  */
5 module libressl_d.compat.sys.types;
6 
7 
8 private static import core.stdcpp.xutility;
9 private static import libressl_d.compat.stdio;
10 public import core.stdc.stdint;
11 public import core.sys.posix.sys.types;
12 public import core.sys.windows.basetsd;
13 
14 extern (C):
15 nothrow @nogc:
16 
17 version (Windows) {
18 	static if (core.stdcpp.xutility._MSC_VER >= 1900) {
19 		//#include <../ucrt/sys/types.h>
20 	} else {
21 		//#include <../include/sys/types.h>
22 	}
23 }
24 
25 version (MinGW) {
26 	//#include <_bsd_types.h>
27 	alias in_addr_t = core.stdc.stdint.uint32_t;
28 	alias uid_t = core.stdc.stdint.uint32_t;
29 }
30 
31 version (Windows) {
32 	alias off_t = libressl_d.compat.stdio.off_t;
33 	alias u_char = ubyte;
34 	alias u_short = ushort;
35 	alias u_int = uint;
36 	alias in_addr_t = core.stdc.stdint.uint32_t;
37 	alias mode_t = core.stdc.stdint.uint32_t;
38 	alias uid_t = core.stdc.stdint.uint32_t;
39 	alias ssize_t = core.sys.windows.basetsd.SSIZE_T;
40 	enum SSIZE_MAX = size_t.max;
41 }
42 
43 /+
44 #if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
45 	#define __bounded__(x, y, z)
46 #endif
47 
48 #if !defined(HAVE_ATTRIBUTE__DEAD) && !defined(__dead)
49 	static if (__traits(compiles, core.stdcpp.xutility._MSC_VER)) {
50 		#define __dead __declspec(noreturn)
51 	} else {
52 		#define __dead __attribute__((__noreturn__))
53 	}
54 #endif
55 
56 version (Windows) {
57 	#define __warn_references(sym, msg)
58 } else {
59 	#if !defined(__warn_references)
60 		#if !defined(__STRING)
61 			#define __STRING(x) #x
62 		#endif
63 
64 		#if defined(__GNUC__) && defined(HAS_GNU_WARNING_LONG)
65 			#define __warn_references(sym, msg) __asm__(".section .gnu.warning." __STRING(sym) "\n\t.ascii \"" msg "\"\n\t.text");
66 		#else
67 			#define __warn_references(sym, msg)
68 		#endif
69 	#endif /* __warn_references */
70 }
71 +/