commit untested condvar code
[cdsspec-compiler.git] / common.h
1 /** @file common.h
2  *  @brief General purpose macros.
3  */
4
5 #ifndef __COMMON_H__
6 #define __COMMON_H__
7
8 #include <stdio.h>
9 #include "config.h"
10
11 #ifdef CONFIG_DEBUG
12 #define DEBUG(fmt, ...) do { printf("*** %25s(): line %-4d *** " fmt, __func__, __LINE__, ##__VA_ARGS__); } while (0)
13 #define DBG() DEBUG("\n")
14 #define DBG_ENABLED() (1)
15 #else
16 #define DEBUG(fmt, ...)
17 #define DBG()
18 #define DBG_ENABLED() (0)
19 #endif
20
21 void assert_hook(void);
22
23 #define ASSERT(expr) \
24 do { \
25         if (!(expr)) { \
26                 fprintf(stderr, "Error: assertion failed in %s at line %d\n", __FILE__, __LINE__); \
27                 print_trace(); \
28                 model_print_summary(); \
29                 assert_hook();                           \
30                 exit(EXIT_FAILURE); \
31         } \
32 } while (0)
33
34 #define error_msg(...) fprintf(stderr, "Error: " __VA_ARGS__)
35
36 void print_trace(void);
37 void model_print_summary(void);
38 #endif /* __COMMON_H__ */