sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 1 | |
| 2 | /*---------------------------------------------------------------*/ |
| 3 | /*--- ---*/ |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 4 | /*--- This file (vex_util.h) is ---*/ |
sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 5 | /*--- Copyright (c) 2004 OpenWorks LLP. All rights reserved. ---*/ |
| 6 | /*--- ---*/ |
| 7 | /*---------------------------------------------------------------*/ |
| 8 | |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 9 | #ifndef __VEX_UTIL_H |
| 10 | #define __VEX_UTIL_H |
sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 11 | |
sewardj | 887a11a | 2004-07-05 17:26:47 +0000 | [diff] [blame] | 12 | #include "libvex_basictypes.h" |
sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 13 | |
| 14 | |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 15 | /* Misc. */ |
| 16 | |
| 17 | #define NULL ((void*)0) |
| 18 | |
| 19 | |
sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 20 | /* Stuff for panicking and assertion. */ |
| 21 | |
| 22 | #define VG__STRING(__str) #__str |
| 23 | |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 24 | #define vassert(expr) \ |
sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 25 | ((void) ((expr) ? 0 : \ |
| 26 | (vex_assert_fail (VG__STRING(expr), \ |
| 27 | __FILE__, __LINE__, \ |
| 28 | __PRETTY_FUNCTION__), 0))) |
| 29 | |
| 30 | __attribute__ ((__noreturn__)) |
| 31 | extern void vex_assert_fail ( const Char* expr, const Char* file, |
| 32 | Int line, const Char* fn ); |
| 33 | __attribute__ ((__noreturn__)) |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 34 | extern void vpanic ( Char* str ); |
sewardj | 5cf515f | 2004-06-26 20:10:35 +0000 | [diff] [blame] | 35 | |
| 36 | |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 37 | /* Printing */ |
| 38 | |
| 39 | __attribute__ ((format (printf, 1, 2))) |
sewardj | 41f43bc | 2004-07-08 14:23:22 +0000 | [diff] [blame^] | 40 | extern UInt vex_printf ( const Char *format, ... ); |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 41 | |
sewardj | 41f43bc | 2004-07-08 14:23:22 +0000 | [diff] [blame^] | 42 | __attribute__ ((format (printf, 2, 3))) |
| 43 | extern UInt vex_sprintf ( Char* buf, const Char *format, ... ); |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 44 | |
| 45 | #endif /* ndef __VEX_UTIL_H */ |
sewardj | ac9af02 | 2004-07-05 01:15:34 +0000 | [diff] [blame] | 46 | |
| 47 | /*---------------------------------------------------------------*/ |
sewardj | 35421a3 | 2004-07-05 13:12:34 +0000 | [diff] [blame] | 48 | /*--- vex_util.h ---*/ |
sewardj | ac9af02 | 2004-07-05 01:15:34 +0000 | [diff] [blame] | 49 | /*---------------------------------------------------------------*/ |