From a278da2eba30c908c6370510869d4cf692a5e3e2 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Sun, 30 Nov 2003 21:10:15 +0000 Subject: [PATCH] correct get_pointer usage [SVN r21017] --- .../python/converter/shared_ptr_to_python.hpp | 3 ++- include/boost/python/handle.hpp | 5 +++++ .../boost/python/object/make_ptr_instance.hpp | 9 --------- include/boost/python/object/pointer_holder.hpp | 18 ++++-------------- .../indexing/detail/indexing_suite_detail.hpp | 8 +++++--- 5 files changed, 16 insertions(+), 27 deletions(-) diff --git a/include/boost/python/converter/shared_ptr_to_python.hpp b/include/boost/python/converter/shared_ptr_to_python.hpp index ac89aad0..e6b3e036 100644 --- a/include/boost/python/converter/shared_ptr_to_python.hpp +++ b/include/boost/python/converter/shared_ptr_to_python.hpp @@ -9,6 +9,7 @@ # include # include # include +# include namespace boost { namespace python { namespace converter { @@ -18,7 +19,7 @@ PyObject* shared_ptr_to_python(shared_ptr const& x) if (!x) return python::detail::none(); else if (shared_ptr_deleter* d = boost::get_deleter(x)) - return incref(d->owner.get()); + return incref( get_pointer( d->owner ) ); else return converter::registered const&>::converters.to_python(&x); } diff --git a/include/boost/python/handle.hpp b/include/boost/python/handle.hpp index 338cd3c2..c88a93af 100755 --- a/include/boost/python/handle.hpp +++ b/include/boost/python/handle.hpp @@ -148,6 +148,11 @@ template inline T * get_pointer(python::handle const & p) #ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP namespace python { +#else + +// We don't want get_pointer above to hide the others +using boost::get_pointer; + #endif typedef handle type_handle; diff --git a/include/boost/python/object/make_ptr_instance.hpp b/include/boost/python/object/make_ptr_instance.hpp index a69afab3..5f90c7ea 100644 --- a/include/boost/python/object/make_ptr_instance.hpp +++ b/include/boost/python/object/make_ptr_instance.hpp @@ -15,14 +15,6 @@ namespace boost { namespace python { namespace objects { -# if BOOST_WORKAROUND(__GNUC__, == 2) -// A weird ADL bug prevents this being found -template T * get_pointer(T * p) -{ - return p; -} -# endif - template struct make_ptr_instance : make_instance_impl > @@ -36,7 +28,6 @@ struct make_ptr_instance template static inline PyTypeObject* get_class_object(Ptr const& x) { - using ::boost::get_pointer; return get_class_object_impl(get_pointer(x)); } diff --git a/include/boost/python/object/pointer_holder.hpp b/include/boost/python/object/pointer_holder.hpp index 4868c58a..ea4c7614 100644 --- a/include/boost/python/object/pointer_holder.hpp +++ b/include/boost/python/object/pointer_holder.hpp @@ -30,20 +30,10 @@ # include # include +# include + namespace boost { namespace python { namespace objects { -template -bool is_null(T const& p, ...) -{ - return get_pointer(p) == 0; -} - -template -bool is_null(T* p, int) -{ - return p == 0; -} - # if BOOST_WORKAROUND(__GNUC__, == 2) # define BOOST_PYTHON_UNFORWARD_LOCAL(z, n, _) BOOST_PP_COMMA_IF(n) (typename unforward::type)objects::do_unforward(a##n,0) # else @@ -114,7 +104,7 @@ void* pointer_holder::holds(type_info dst_t) if (dst_t == python::type_id()) return &this->m_p; - if (objects::is_null(this->m_p, 0)) + if (get_pointer(this->m_p) == 0) return 0; type_info src_t = python::type_id(); @@ -128,7 +118,7 @@ void* pointer_holder_back_reference::holds(type_info dst_t) if (dst_t == python::type_id()) return &this->m_p; - if (objects::is_null(this->m_p, 0)) + if (!get_pointer(this->m_p)) return 0; if (dst_t == python::type_id()) diff --git a/include/boost/python/suite/indexing/detail/indexing_suite_detail.hpp b/include/boost/python/suite/indexing/detail/indexing_suite_detail.hpp index 4d192a49..e3ecf7d7 100644 --- a/include/boost/python/suite/indexing/detail/indexing_suite_detail.hpp +++ b/include/boost/python/suite/indexing/detail/indexing_suite_detail.hpp @@ -703,11 +703,13 @@ namespace boost { namespace python { namespace detail { return p.get(); } -#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -namespace python { namespace detail { +#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP + // Don't hide these other get_pointer overloads + using boost::python::get_pointer; + using boost::get_pointer; +}} // namespace python::detail #endif -}} // namespace python::detail } // namespace boost #endif // INDEXING_SUITE_DETAIL_JDG20036_HPP