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 +/