diff --git a/dumux/common/valgrind.hh b/dumux/common/valgrind.hh index 79fc175b9f65a1f80b8147f16cfabb68f1709127..d3fff186edb4713e64d9611d5a7dca0583069876 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