Block-Structured AMR Software Framework
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
AMReX_BLassert.H
Go to the documentation of this file.
1
2#ifndef AMREX_BLASSERT_H_
3#define AMREX_BLASSERT_H_
4#include <AMReX_Config.H>
5
6#include <AMReX.H>
7
8#ifdef AMREX_ASSERT
9#undef AMREX_ASSERT
10#endif
11
12#ifdef BL_ASSERT
13#undef BL_ASSERT
14#endif
15
16#if !defined(AMREX_DEBUG) && !defined(AMREX_USE_ASSERTION)
17
18/*
19 The macro AMREX_ASSERT(EX) is a debugging macro, used to test the
20 internal consistency of AMReX, that may also be useful in user
21 code. The argument EX is a C++ expression that you expect to
22 always evaluate to true.
23
24 When code is compiled with the DEBUG macro set to TRUE, the
25 AMREX_ASSERT(EX) macro expands to a boolean test of the expression EX.
26 If that expression evaluates to true, nothing happens, but if the
27 expression evaluates to false, a message is output detailing the
28 file and line number of the AMREX_ASSERT(EX) statement, as well as the
29 literal expression EX itself, and then exits via abort() using
30 amrex::Assert(). The idea is that if the assertion fails, something
31 has gone terribly wrong somewhere.
32
33 If the DEBUG macro is not set to TRUE, the AMREX_ASSERT(EX) call becomes
34 a null statement in the code, which will be eliminated by the code
35 optimizer.
36*/
37#define AMREX_ASSERT_WITH_MESSAGE(EX,MSG) ((void)0)
38#define AMREX_ASSERT(EX) ((void)0)
39#define BL_ASSERT(EX) ((void)0)
40
41#else
42
43#define AMREX_ASSERT_WITH_MESSAGE(EX,MSG) (EX)?((void)0):amrex::Assert( # EX , __FILE__, __LINE__ , # MSG)
44#define AMREX_ASSERT(EX) (EX)?((void)0):amrex::Assert( # EX , __FILE__, __LINE__)
45#define BL_ASSERT(EX) (EX)?((void)0):amrex::Assert( # EX , __FILE__, __LINE__)
46
47#endif
48
49#define AMREX_ALWAYS_ASSERT_WITH_MESSAGE(EX,MSG) (EX)?((void)0):amrex::Assert( # EX , __FILE__, __LINE__ , # MSG)
50#define AMREX_ALWAYS_ASSERT(EX) (EX)?((void)0):amrex::Assert( # EX , __FILE__, __LINE__)
51
52
53#if !defined(AMREX_USE_GPU) || !defined(AMREX_DEBUG) && !defined(AMREX_USE_ASSERTION)
54#define AMREX_GPU_ASSERT(EX) ((void)0)
55#else
56#define AMREX_GPU_ASSERT(EX) (EX)?((void)0):amrex::Assert( # EX , __FILE__, __LINE__)
57#endif
58
59#endif /*BL_BL_ASSERT_H*/