-
Notifications
You must be signed in to change notification settings - Fork 15
/
mardyn_assert.h
35 lines (29 loc) · 948 Bytes
/
mardyn_assert.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
* mardyn_assert.h
*
* Created on: 8 Feb 2017
* Author: tchipevn
*/
#ifndef SRC_UTILS_MARDYN_ASSERT_H_
#define SRC_UTILS_MARDYN_ASSERT_H_
#include "Logger.h"
inline void mardyn_exit(int code) {
#ifdef ENABLE_MPI
// terminate all mpi processes and return exitcode
MPI_Abort(MPI_COMM_WORLD, code);
#else
// call global abort - this stops the debugger at the right spot.
Log::global_log->error_always_output() << "Exit code would have been " << code << std::endl;
::abort();
#endif
}
inline void __mardyn_assert__(const char * expr, const char* file, int line) {
Log::global_log->error_always_output() << "Assertion \"" << expr << "\" failed at " << file << ":" << line << std::endl;
mardyn_exit(1);
}
#ifdef NDEBUG
#define mardyn_assert(EXPRESSION) ((void)0)
#else
#define mardyn_assert(EXPRESSION) ((EXPRESSION) ? (void)0 : __mardyn_assert__(#EXPRESSION, __FILE__, __LINE__))
#endif
#endif /* SRC_UTILS_MARDYN_ASSERT_H_ */