Merge branch 'norris'
[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 #define ASSERT(expr) \
22 do { \
23         if (!(expr)) { \
24                 fprintf(stderr, "Error: assertion failed in %s at line %d\n", __FILE__, __LINE__); \
25                 print_trace(); \
26                 model_print_summary(); \
27                 exit(EXIT_FAILURE); \
28         } \
29 } while (0);
30
31 #define error_msg(...) fprintf(stderr, "Error: " __VA_ARGS__)
32
33 void print_trace(void);
34 void model_print_summary(void);
35
36 #endif /* __COMMON_H__ */