… | |
… | |
21 | */ |
21 | */ |
22 | |
22 | |
23 | #ifndef UTIL_H__ |
23 | #ifndef UTIL_H__ |
24 | #define UTIL_H__ |
24 | #define UTIL_H__ |
25 | |
25 | |
|
|
26 | #include <compiler.h> |
|
|
27 | |
26 | #define DEBUG_POISON 0x00 // poison memory before freeing it if != 0 |
28 | #define DEBUG_POISON 0x00 // poison memory before freeing it if != 0 |
27 | #define DEBUG_SALLOC 0 // add a debug wrapper around all sallocs |
29 | #define DEBUG_SALLOC 0 // add a debug wrapper around all sallocs |
28 | #define PREFER_MALLOC 0 // use malloc and not the slice allocator |
30 | #define PREFER_MALLOC 0 // use malloc and not the slice allocator |
29 | |
|
|
30 | #if __GNUC__ >= 3 |
|
|
31 | # define is_constant(c) __builtin_constant_p (c) |
|
|
32 | # define expect(expr,value) __builtin_expect ((expr),(value)) |
|
|
33 | # define prefetch(addr,rw,locality) __builtin_prefetch (addr, rw, locality) |
|
|
34 | # define noinline __attribute__((__noinline__)) |
|
|
35 | #else |
|
|
36 | # define is_constant(c) 0 |
|
|
37 | # define expect(expr,value) (expr) |
|
|
38 | # define prefetch(addr,rw,locality) |
|
|
39 | # define noinline |
|
|
40 | #endif |
|
|
41 | |
|
|
42 | #if __GNUC__ < 4 || (__GNUC__ == 4 || __GNUC_MINOR__ < 4) |
|
|
43 | # define decltype(x) typeof(x) |
|
|
44 | #endif |
|
|
45 | |
|
|
46 | // put into ifs if you are very sure that the expression |
|
|
47 | // is mostly true or mosty false. note that these return |
|
|
48 | // booleans, not the expression. |
|
|
49 | #define expect_false(expr) expect ((expr) ? 1 : 0, 0) |
|
|
50 | #define expect_true(expr) expect ((expr) ? 1 : 0, 1) |
|
|
51 | |
31 | |
52 | #include <pthread.h> |
32 | #include <pthread.h> |
53 | |
33 | |
54 | #include <cstddef> |
34 | #include <cstddef> |
55 | #include <cmath> |
35 | #include <cmath> |
… | |
… | |
722 | |
702 | |
723 | int similar_direction (int a, int b); |
703 | int similar_direction (int a, int b); |
724 | |
704 | |
725 | // like v?sprintf, but returns a "static" buffer |
705 | // like v?sprintf, but returns a "static" buffer |
726 | char *vformat (const char *format, va_list ap); |
706 | char *vformat (const char *format, va_list ap); |
727 | char *format (const char *format, ...); |
707 | char *format (const char *format, ...) attribute ((format (printf, 1, 2))); |
728 | |
708 | |
729 | // safety-check player input which will become object->msg |
709 | // safety-check player input which will become object->msg |
730 | bool msg_is_safe (const char *msg); |
710 | bool msg_is_safe (const char *msg); |
731 | |
711 | |
732 | ///////////////////////////////////////////////////////////////////////////// |
712 | ///////////////////////////////////////////////////////////////////////////// |