diff options
Diffstat (limited to 'raul/SharedPtr.hpp')
-rw-r--r-- | raul/SharedPtr.hpp | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/raul/SharedPtr.hpp b/raul/SharedPtr.hpp index 8e803ed..ae41b17 100644 --- a/raul/SharedPtr.hpp +++ b/raul/SharedPtr.hpp @@ -18,33 +18,25 @@ #ifndef RAUL_SHARED_PTR_HPP #define RAUL_SHARED_PTR_HPP +#ifdef BOOST_SP_ENABLE_DEBUG_HOOKS +#include <algorithm> #include <cassert> #include <cstddef> - -#ifdef BOOST_SP_ENABLE_DEBUG_HOOKS #include <iostream> -#include <list> -#include <algorithm> +#include <set> -static std::list<void*> shared_ptr_counters; +static std::set<void*> shared_ptr_counters; // Use debug hooks to ensure 2 shared_ptrs never point to the same thing namespace boost { - - inline void sp_scalar_constructor_hook(void* object, unsigned long cnt, void* ptr) { - assert(std::find(shared_ptr_counters.begin(), shared_ptr_counters.end(), - (void*)object) == shared_ptr_counters.end()); - shared_ptr_counters.push_back(object); - //std::cerr << "Creating SharedPtr to " - // << object << ", count = " << cnt << std::endl; + inline void sp_scalar_constructor_hook(void* px, std::size_t size, void* pn) { + assert(shared_ptr_counters.find(px) == shared_ptr_counters.end()); + shared_ptr_counters.push_back(px); } - inline void sp_scalar_destructor_hook(void* object, unsigned long cnt, void* ptr) { - shared_ptr_counters.remove(object); - //std::cerr << "Destroying SharedPtr to " - // << object << ", count = " << cnt << std::endl; + inline void sp_scalar_destructor_hook(void* px, std::size_t size, void* pn) { + shared_ptr_counters.remove(px); } - } #endif // BOOST_SP_ENABLE_DEBUG_HOOKS @@ -52,7 +44,7 @@ namespace boost { #include <boost/shared_ptr.hpp> #ifdef BOOST_AC_USE_PTHREADS -#error "Boost is using mutex locking for pointer reference counting." +#error "Boost is using mutexes for shared_ptr reference counting." #error "This is VERY slow. Please report your platform to d@drobilla.net" #endif |