| 37 #define APPNAME "botc" |
37 #define APPNAME "botc" |
| 38 #define VERSION_MAJOR 1 |
38 #define VERSION_MAJOR 1 |
| 39 #define VERSION_MINOR 0 |
39 #define VERSION_MINOR 0 |
| 40 #define VERSION_PATCH 0 |
40 #define VERSION_PATCH 0 |
| 41 |
41 |
| |
42 #define MACRO_TO_STRING_HELPER(A) #A |
| |
43 #define MACRO_TO_STRING(A) MACRO_TO_STRING_HELPER(A) |
| |
44 |
| 42 #define MAKE_VERSION_NUMBER(MAJ, MIN, PAT) ((MAJ * 10000) + (MIN * 100) + PAT) |
45 #define MAKE_VERSION_NUMBER(MAJ, MIN, PAT) ((MAJ * 10000) + (MIN * 100) + PAT) |
| 43 #define VERSION_NUMBER MAKE_VERSION_NUMBER (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) |
46 #define VERSION_NUMBER MAKE_VERSION_NUMBER (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) |
| 44 |
47 |
| 45 // On Windows, files are case-insensitive |
48 // On Windows, files are case-insensitive |
| 46 #if (defined(WIN32) || defined(_WIN32) || defined(__WIN32)) && !defined(__CYGWIN__) |
49 #if (defined(WIN32) || defined(_WIN32) || defined(__WIN32)) && !defined(__CYGWIN__) |
| 61 template<typename... argtypes> |
64 template<typename... argtypes> |
| 62 void error (const char* fmtstr, const argtypes&... args); |
65 void error (const char* fmtstr, const argtypes&... args); |
| 63 |
66 |
| 64 #ifdef DEBUG |
67 #ifdef DEBUG |
| 65 # define BOTC_GENERIC_ASSERT(A,B,OP,COMPLAINT) ((A OP B) ? (void) 0 : \ |
68 # define BOTC_GENERIC_ASSERT(A,B,OP,COMPLAINT) ((A OP B) ? (void) 0 : \ |
| 66 error ("assertion failed at " __FILE__ ":%1: " #A " (%2) " COMPLAINT " " #B " (%3)", __LINE__, A, B)); |
69 error ("assertion failed at " __FILE__ ":" MACRO_TO_STRING(__LINE__) ": " #A " (%1) " COMPLAINT " " #B " (%2)", A, B)); |
| 67 #else |
70 #else |
| 68 # define BOTC_GENERIC_ASSERT(A,B,OP,COMPLAINT) {} |
71 # define BOTC_GENERIC_ASSERT(A,B,OP,COMPLAINT) {} |
| 69 #endif |
72 #endif |
| 70 |
73 |
| 71 #define ASSERT_EQ(A,B) BOTC_GENERIC_ASSERT (A, B, ==, "does not equal") |
74 #define ASSERT_EQ(A,B) BOTC_GENERIC_ASSERT (A, B, ==, "does not equal") |