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