getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] (no subject)


From: Yves Renard
Subject: [Getfem-commits] (no subject)
Date: Fri, 14 Jul 2017 01:37:42 -0400 (EDT)

branch: master
commit 708f9ba58e3df4747eb4620457936ca2f6d5c8ef
Author: rpplx <address@hidden>
Date:   Wed Jul 12 22:39:44 2017 +0200

    Introduced macro GMM_ASSERT_LEVEL that should take numerical value. 
Depending on the assertion level the macros GMM_ASSERT1,
    GMM_ASSERT2 and GMM_ASSERT3 are defined to throw exception or are defined 
to be empty. This allows to switch of some assertion
    on compile time.
---
 src/gmm/gmm_except.h | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/gmm/gmm_except.h b/src/gmm/gmm_except.h
index cae703d..65084cf 100644
--- a/src/gmm/gmm_except.h
+++ b/src/gmm/gmm_except.h
@@ -140,25 +140,35 @@ namespace gmm {
   }
 #endif
 
-# define GMM_ASSERT1(test, errormsg)                                        \
-  { if (!(test)) GMM_THROW_(gmm::gmm_error, errormsg); }
 
   inline void GMM_THROW() {}
 #define GMM_THROW(a, b) { GMM_THROW_(a,b); gmm::GMM_THROW(); }
 
 # define GMM_THROW_DEFAULT(errormsg) GMM_THROW_AT_LEVEL(errormsg, 1)
+
+// This allows not to compile some assertions 
+#ifndef GMM_ASSERT_LEVEL
 #if defined(NDEBUG)
+# define GMM_ASSERT_LEVEL 1
+#elif defined(DEBUG_MODE)
+# define GMM_ASSERT_LEVEL 3
+#else
+# define GMM_ASSERT_LEVEL 2
+#endif
+#endif
+
+
+# define GMM_ASSERT1(test, errormsg) { if (!(test)) 
GMM_THROW_AT_LEVEL(errormsg, 1); }
+
+#if GMM_ASSERT_LEVEL < 2
 # define GMM_ASSERT2(test, errormsg) {}
 # define GMM_ASSERT3(test, errormsg) {}
-#elif !defined(GMM_FULL_NDEBUG)
-# define GMM_ASSERT2(test, errormsg)                                        \
-  { if (!(test)) GMM_THROW_(gmm::gmm_error, errormsg); }
-# define GMM_ASSERT3(test, errormsg)                                        \
-  { if (!(test)) GMM_THROW_(gmm::gmm_error, errormsg); }
+#elif GMM_ASSERT_LEVEL < 3
+# define GMM_ASSERT2(test, errormsg){ if (!(test)) 
GMM_THROW_AT_LEVEL(errormsg, 2); }
+# define GMM_ASSERT3(test, errormsg){}
 #else
-# define GMM_ASSERT2(test, errormsg)                                        \
-  { if (!(test)) GMM_THROW_(gmm::gmm_error, errormsg); }
-# define GMM_ASSERT3(test, errormsg)
+# define GMM_ASSERT2(test, errormsg){ if (!(test)) 
GMM_THROW_AT_LEVEL(errormsg, 2); }
+# define GMM_ASSERT3(test, errormsg){ if (!(test)) 
GMM_THROW_AT_LEVEL(errormsg, 3); }
 #endif
 
 /* *********************************************************************** */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]