1 /+ 2 + Copyright 2022 – 2024 Aya Partridge 3 + Distributed under the Boost Software License, Version 1.0. 4 + (See accompanying file LICENSE_1_0.txt or copy at 5 + http://www.boost.org/LICENSE_1_0.txt) 6 +/ 7 module bindbc.common.types; 8 9 version(WebAssembly) version = NoStdC; 10 11 //c_long; c_ulong 12 version(NoStdC){ 13 static if((void*).sizeof > int.sizeof){ 14 alias c_long = long; 15 alias c_ulong = ulong; 16 }else{ 17 private enum __c_long : int; 18 private enum __c_ulong : uint; 19 alias c_long = __c_long; 20 alias c_ulong = __c_ulong; 21 } 22 }else{ 23 static import core.stdc.config; 24 alias c_long = core.stdc.config.c_long; 25 alias c_ulong = core.stdc.config.c_ulong; 26 } 27 28 //c_longlong; c_ulonglong 29 private enum __c_longlong : long; 30 private enum __c_ulonglong : ulong; 31 alias c_longlong = __c_longlong; 32 alias c_ulonglong = __c_ulonglong; 33 34 //c_int64; c_uint64 35 version(NoStdC){ 36 alias c_int64 = long; 37 alias c_uint64 = ulong; 38 }else{ 39 static import core.stdc.stdint; 40 alias c_int64 = core.stdc.stdint.int64_t; 41 alias c_uint64 = core.stdc.stdint.uint64_t; 42 } 43 44 //va_list 45 version(NoStdC){ 46 alias va_list = void*; 47 }else{ 48 static import core.stdc.stdarg; 49 alias va_list = core.stdc.stdarg.va_list; 50 } 51 52 //wchar_t 53 static if((){ 54 version(Posix) return true; 55 else version(WebAssembly) return true; 56 else return false; 57 }()){ 58 alias wchar_t = dchar; 59 }else static if((){ 60 version(Windows) return true; 61 else version(WinRT) return true; 62 else version(WinGDK) return true; 63 else return false; 64 }()){ 65 alias wchar_t = wchar; 66 }else static assert(0, "`sizeof(wchar_t)` is not known on this platform. Please add it to bindbc/common/types.d");