summaryrefslogtreecommitdiff
path: root/libs/ode-0.16.1/ode/src/error.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ode-0.16.1/ode/src/error.h')
-rw-r--r--libs/ode-0.16.1/ode/src/error.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/libs/ode-0.16.1/ode/src/error.h b/libs/ode-0.16.1/ode/src/error.h
new file mode 100644
index 0000000..4f561f8
--- /dev/null
+++ b/libs/ode-0.16.1/ode/src/error.h
@@ -0,0 +1,101 @@
+/*************************************************************************
+ * *
+ * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *
+ * All rights reserved. Email: russ@q12.org Web: www.q12.org *
+ * *
+ * This library is free software; you can redistribute it and/or *
+ * modify it under the terms of EITHER: *
+ * (1) The GNU Lesser General Public License as published by the Free *
+ * Software Foundation; either version 2.1 of the License, or (at *
+ * your option) any later version. The text of the GNU Lesser *
+ * General Public License is included with this library in the *
+ * file LICENSE.TXT. *
+ * (2) The BSD-style license that is included with this library in *
+ * the file LICENSE-BSD.TXT. *
+ * *
+ * This library is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *
+ * LICENSE.TXT and LICENSE-BSD.TXT for more details. *
+ * *
+ *************************************************************************/
+
+/* Library private error handling functions and macros */
+
+#ifndef _ODE__PRIVATE_ERROR_H_
+#define _ODE__PRIVATE_ERROR_H_
+
+#include <ode/error.h>
+#include <ode/common.h>
+
+
+
+/* debugging:
+ * IASSERT is an internal assertion, i.e. a consistency check. if it fails
+ * we want to know where.
+ * UASSERT is a user assertion, i.e. if it fails a nice error message
+ * should be printed for the user.
+ * AASSERT is an arguments assertion, i.e. if it fails "bad argument(s)"
+ * is printed.
+ * DEBUGMSG just prints out a message
+ */
+
+# if defined(__STDC__) && __STDC_VERSION__ >= 199901L
+# define __FUNCTION__ __func__
+# endif
+#ifndef dNODEBUG
+# ifdef __GNUC__
+# define dIASSERT(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
+ "assertion \"" #a "\" failed in %s() [%s:%u]",__FUNCTION__,__FILE__,__LINE__); } }
+# define dUASSERT(a,msg) { if (!(a)) { dDebug (d_ERR_UASSERT, \
+ msg " in %s()", __FUNCTION__); } }
+# define dDEBUGMSG(msg) { dMessage (d_ERR_UASSERT, \
+ msg " in %s() [%s:%u]", __FUNCTION__,__FILE__,__LINE__); }
+# else // not __GNUC__
+# define dIASSERT(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
+ "assertion \"" #a "\" failed in %s:%u",__FILE__,__LINE__); } }
+# define dUASSERT(a,msg) { if (!(a)) { dDebug (d_ERR_UASSERT, \
+ msg " (%s:%u)", __FILE__,__LINE__); } }
+# define dDEBUGMSG(msg) { dMessage (d_ERR_UASSERT, \
+ msg " (%s:%u)", __FILE__,__LINE__); }
+# endif
+# define dIVERIFY(a) dIASSERT(a)
+# define dUVERIFY(a, msg) dUASSERT(a, msg)
+#else
+# define dIASSERT(a) ((void)0)
+# define dUASSERT(a,msg) ((void)0)
+# define dDEBUGMSG(msg) ((void)0)
+# define dIVERIFY(a) ((void)(a))
+# define dUVERIFY(a, msg) ((void)(a))
+#endif
+
+#ifdef __GNUC__
+#define dUNUSED(Name) Name __attribute__((unused))
+#else // not __GNUC__
+#define dUNUSED(Name) Name
+#endif
+
+#if __cplusplus >= 201103L
+#define dSASSERT(e) static_assert(e, #e)
+#define dSMSGASSERT(e, message) static_assert(e, message)
+#else
+#define d_SASSERT_INNER_TOKENPASTE(x, y) x ## y
+#define d_SASSERT_TOKENPASTE(x, y) d_SASSERT_INNER_TOKENPASTE(x, y)
+#define dSASSERT(e) typedef char dUNUSED(d_SASSERT_TOKENPASTE(d_StaticAssertionFailed_, __LINE__)[(e)?1:-1])
+#define dSMSGASSERT(e, message) dSASSERT(e)
+#endif
+
+# ifdef __GNUC__
+# define dICHECK(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
+ "assertion \"" #a "\" failed in %s() [%s:%u]",__FUNCTION__,__FILE__,__LINE__); *(int *)0 = 0; } }
+# else // not __GNUC__
+# define dICHECK(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
+ "assertion \"" #a "\" failed in %s:%u",__FILE__,__LINE__); *(int *)0 = 0; } }
+# endif
+
+// Argument assert is a special case of user assert
+#define dAASSERT(a) dUASSERT(a, "Bad argument(s)")
+#define dAVERIFY(a) dUVERIFY(a, "Bad argument(s)")
+
+
+#endif