Orxonox  0.0.5 Codename: Arcturus
OrxAssert.h
Go to the documentation of this file.
1 /*
2  * ORXONOX - the hottest 3D action shooter ever to exist
3  * > www.orxonox.net <
4  *
5  *
6  * License notice:
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * Author:
23  * Reto Grieder
24  * Co-authors:
25  * ...
26  *
27  */
28 
36 #ifndef _OrxAssert_H__
37 #define _OrxAssert_H__
38 
39 #include "UtilPrereqs.h"
40 
41 #include <cassert>
42 #include "Output.h"
43 
44 #ifndef NDEBUG
45 
54 #define OrxAssert(condition, errorMessage) \
55  do \
56  { \
57  if (!(condition)) \
58  { \
59  orxout(user_error) << __FILE__ << "(" << __LINE__ << "): "; \
60  orxout(user_error) << "Assertion failed in " << __FUNCTIONNAME__ << endl; \
61  orxout(user_error) << "Expression: " << #condition << endl; \
62  orxout(user_error) << "Message : " << errorMessage << endl; \
63  /* Don't use the condition again to avoid double evaluation */ \
64  /* Instead, stringify the expression and negate it */ \
65  assert(!#condition); \
66  } \
67  } while (false)
68 
78 #define OrxVerify(condition, errorMessage) \
79  do \
80  { \
81  if (!(condition)) \
82  { \
83  orxout(user_error) << __FILE__ << "(" << __LINE__ << "): "; \
84  orxout(user_error) << "Verification failed in " << __FUNCTIONNAME__ << endl; \
85  orxout(user_error) << "Expression: " << #condition << endl; \
86  orxout(user_error) << "Message : " << errorMessage << endl; \
87  /* Don't use the condition again to avoid double evaluation */ \
88  /* Instead, stringify the expression and negate it */ \
89  assert(!#condition); \
90  } \
91  } while (false)
92 
93 #else
94 
95 #define OrxAssert(condition, errorMessage) ((void)0)
96 
97 #define OrxVerify(condition, errorMessage) \
98  do \
99  { \
100  if (!(condition)) \
101  { \
102  orxout(user_error) << __FILE__ << "(" << __LINE__ << "): "; \
103  orxout(user_error) << "Verification failed in " << __FUNCTIONNAME__ << endl; \
104  orxout(user_error) << "Expression: " << #condition << endl; \
105  orxout(user_error) << "Message : " << errorMessage << endl; \
106  /* No assert() in release configuration */ \
107  } \
108  } while (false)
109 
110 #endif
111 
112 #endif /* _OrxAssert_H__ */
Shared library macros, enums, constants and forward declarations for the util library ...
Defines the helper function orxout() and includes all necessary headers to use the output system...