From d5f0e4eed260a4953384571f56e38433a656caa9 Mon Sep 17 00:00:00 2001
From: Andreas Lauser <and@poware.org>
Date: Wed, 6 Jul 2011 16:32:22 +0000
Subject: [PATCH] valgrind: add helper functions for C-style arrays

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@6134 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 dumux/common/valgrind.hh | 41 ++++++++++++++++++++++++++++++++++++----
 1 file changed, 37 insertions(+), 4 deletions(-)

diff --git a/dumux/common/valgrind.hh b/dumux/common/valgrind.hh
index 79fc175b9f..d3fff186ed 100644
--- a/dumux/common/valgrind.hh
+++ b/dumux/common/valgrind.hh
@@ -68,12 +68,21 @@ namespace Valgrind
 template <class T>
 inline bool CheckDefined(const T &value)
 {
-#if HAVE_VALGRIND
+#if !defined NDEBUG && HAVE_VALGRIND
     unsigned int tmp = VALGRIND_CHECK_MEM_IS_DEFINED(&value, sizeof(T));
     return tmp == 0;
 #endif
 }
 
+template <class T>
+inline bool CheckDefined(const T *value, int size)
+{
+#if !defined NDEBUG && HAVE_VALGRIND
+    unsigned int tmp = VALGRIND_CHECK_MEM_IS_DEFINED(value, size*sizeof(T));
+    return tmp == 0;
+#endif
+}
+
 /*!
  * \brief Make the memory on which an object resides undefined.
  *
@@ -84,11 +93,19 @@ inline bool CheckDefined(const T &value)
 template <class T>
 inline void SetUndefined(const T &value)
 {
-#if HAVE_VALGRIND
+#if !defined NDEBUG && HAVE_VALGRIND
     VALGRIND_MAKE_MEM_UNDEFINED(&value, sizeof(T));
 #endif
 }
 
+template <class T>
+inline void SetUndefined(const T *value, int size)
+{
+#if !defined NDEBUG && HAVE_VALGRIND
+    VALGRIND_MAKE_MEM_UNDEFINED(value, size*sizeof(T));
+#endif
+}
+
 /*!
  * \brief Make the memory on which an object resides defined.
  *
@@ -99,11 +116,19 @@ inline void SetUndefined(const T &value)
 template <class T>
 inline void SetDefined(const T &value)
 {
-#if HAVE_VALGRIND
+#if !defined NDEBUG && HAVE_VALGRIND
     VALGRIND_MAKE_MEM_DEFINED(&value, sizeof(T));
 #endif
 }
 
+template <class T>
+inline void SetDefined(const T *value, int n)
+{
+#if !defined NDEBUG && HAVE_VALGRIND
+    VALGRIND_MAKE_MEM_DEFINED(value, n*sizeof(T));
+#endif
+}
+
 /*!
  * \brief Make valgrind complain if an object's memory is accessed.
  *
@@ -114,11 +139,19 @@ inline void SetDefined(const T &value)
 template <class T>
 inline void SetNoAccess(const T &value)
 {
-#if HAVE_VALGRIND
+#if !defined NDEBUG && HAVE_VALGRIND
     VALGRIND_MAKE_MEM_NOACCESS(&value, sizeof(T));
 #endif
 }
 
+template <class T>
+inline void SetNoAccess(const T *value, int n)
+{
+#if !defined NDEBUG && HAVE_VALGRIND
+    VALGRIND_MAKE_MEM_NOACCESS(value, n*sizeof(T));
+#endif
+}
+
 }
 
 #endif
-- 
GitLab