1 /** 2 * D header file for C99. 3 * 4 * $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_assert.h.html, _assert.h) 5 * 6 * License: Distributed under the 7 * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). 8 * (See accompanying file LICENSE) 9 * Source: $(DRUNTIMESRC core/stdc/_assert_.d) 10 * Standards: ISO/IEC 9899:1999 (E) 11 */ 12 13 /**************************** 14 * These are the various functions called by the assert() macro. 15 */ 16 17 module core.stdc.assert_; 18 19 version (OSX) 20 version = Darwin; 21 else version (iOS) 22 version = Darwin; 23 else version (TVOS) 24 version = Darwin; 25 else version (WatchOS) 26 version = Darwin; 27 28 extern (C): 29 @trusted: 30 nothrow: 31 @nogc: 32 33 version (CRuntime_DigitalMars) 34 { 35 /*** 36 * Assert failure function in the Digital Mars C library. 37 */ 38 noreturn _assert(const(void)* exp, const(void)* file, uint line); 39 } 40 else version (CRuntime_Microsoft) 41 { 42 /*** 43 * Assert failure function in the Microsoft C library. 44 * `_assert` is not in assert.h, but it is in the library. 45 */ 46 noreturn _wassert(const(wchar)* exp, const(wchar)* file, uint line); 47 /// 48 noreturn _assert(const(char)* exp, const(char)* file, uint line); 49 } 50 else version (Darwin) 51 { 52 /*** 53 * Assert failure function in the Darwin C library. 54 */ 55 noreturn __assert_rtn(const(char)* func, const(char)* file, uint line, const(char)* exp); 56 } 57 else version (FreeBSD) 58 { 59 /*** 60 * Assert failure function in the FreeBSD C library. 61 */ 62 noreturn __assert(const(char)* func, const(char)* file, uint line, const(char)* exp); 63 } 64 else version (NetBSD) 65 { 66 /*** 67 * Assert failure function in the NetBSD C library. 68 */ 69 noreturn __assert(const(char)* file, int line, const(char)* exp); 70 /// 71 noreturn __assert13(const(char)* file, int line, const(char)* func, const(char)* exp); 72 } 73 else version (OpenBSD) 74 { 75 /*** 76 * Assert failure function in the OpenBSD C library. 77 */ 78 noreturn __assert(const(char)* file, int line, const(char)* exp); 79 /// 80 noreturn __assert2(const(char)* file, int line, const(char)* func, const(char)* exp); 81 } 82 else version (DragonFlyBSD) 83 { 84 /*** 85 * Assert failure function in the DragonFlyBSD C library. 86 */ 87 noreturn __assert(const(char)* func, const(char)* file, uint line, const(char)* exp); 88 } 89 else version (CRuntime_Glibc) 90 { 91 /*** 92 * Assert failure functions in the GLIBC library. 93 */ 94 noreturn __assert(const(char)* exp, const(char)* file, uint line); 95 /// 96 noreturn __assert_fail(const(char)* exp, const(char)* file, uint line, const(char)* func); 97 /// 98 noreturn __assert_perror_fail(int errnum, const(char)* file, uint line, const(char)* func); 99 } 100 else version (CRuntime_Bionic) 101 { 102 /*** 103 * Assert failure functions in the Bionic library. 104 */ 105 noreturn __assert(const(char)* __file, int __line, const(char)* __msg); 106 /// 107 noreturn __assert2(const(char)* __file, int __line, const(char)* __function, const(char)* __msg); 108 } 109 else version (CRuntime_Musl) 110 { 111 /*** 112 * Assert failure function in the Musl C library. 113 */ 114 noreturn __assert_fail(const(char)* exp, const(char)* file, uint line, const(char)* func); 115 } 116 else version (CRuntime_UClibc) 117 { 118 noreturn __assert(const(char)* exp, const(char)* file, uint line, const(char)* func); 119 } 120 else version (Solaris) 121 { 122 noreturn __assert_c99(const(char)* exp, const(char)* file, uint line, const(char)* func); 123 } 124 else 125 { 126 static assert(0); 127 }