 |
v1.1.0
|
9 # error This is a userspace-only header, not allowed by the current build.
12 #include <sifteo/abi.h>
40 #define NOINLINE __attribute__ ((noinline))
57 #define ALWAYS_INLINE __attribute__ ((always_inline))
61 #define STRINGIFY(_x) #_x
71 #define TOSTRING(_x) STRINGIFY(_x)
75 #define SRCLINE __FILE__ ":" TOSTRING(__LINE__)
98 #define DEBUG_ONLY(_x) \
100 if (_SYS_lti_isDebug()) { \
162 if (_SYS_lti_isDebug()) \
163 _SYS_lti_log(__VA_ARGS__); \
186 # define ASSERT(_x) \
188 if (_SYS_lti_isDebug() && !(_x)) { \
189 _SYS_lti_log("ASSERT failure at %s:%d, (%s)\n", __FILE__, __LINE__, #_x); \
208 #define SCRIPT_TYPE(_type) \
210 _SYS_log((_SYS_SCRIPT_ ## _type) | (_SYS_LOGTYPE_SCRIPT << 27), \
247 #define SCRIPT(_type, _code) \
249 if (_SYS_lti_isDebug()) { \
250 SCRIPT_TYPE(_type); \
251 _SYS_lti_log("%s", #_code); \
284 #define SCRIPT_FMT(_type, ...) \
286 if (_SYS_lti_isDebug()) { \
287 SCRIPT_TYPE(_type); \
288 _SYS_lti_log(__VA_ARGS__); \
295 #define LOG_INT(_x) LOG("%s = %d\n", #_x, (_x));
299 #define LOG_HEX(_x) LOG("%s = 0x%08x\n", #_x, (_x));
303 #define LOG_FLOAT(_x) LOG("%s = %f\n", #_x, (_x));
307 #define LOG_STR(_x) LOG("%s = \"%s\"\n", #_x, (const char*)(_x));
311 #define LOG_INT2(_x) LOG("%s = (%d, %d)\n", #_x, (_x).x, (_x).y);
315 #define LOG_INT3(_x) LOG("%s = (%d, %d, %d)\n", #_x, (_x).x, (_x).y, (_x).z);
319 #define LOG_FLOAT2(_x) LOG("%s = (%f, %f)\n", #_x, (_x).x, (_x).y);
323 #define STATIC_ASSERT(_x) ((void)sizeof(char[1 - 2*!(_x)]))
328 #define MIN(a,b) ((a) < (b) ? (a) : (b))
331 #define MAX(a,b) ((a) > (b) ? (a) : (b))
343 #define arraysize(a) (sizeof(a) / sizeof((a)[0]))
349 #define offsetof(t,m) ((uintptr_t)(uint8_t*)&(((t*)0)->m))