summaryrefslogtreecommitdiff
path: root/boost/python
diff options
context:
space:
mode:
Diffstat (limited to 'boost/python')
-rwxr-xr-xboost/python/arg_from_python.hpp6
-rw-r--r--boost/python/args.hpp11
-rw-r--r--boost/python/bases.hpp2
-rwxr-xr-xboost/python/cast.hpp9
-rw-r--r--boost/python/class.hpp16
-rw-r--r--boost/python/converter/arg_from_python.hpp5
-rwxr-xr-xboost/python/converter/arg_to_python.hpp12
-rw-r--r--boost/python/converter/object_manager.hpp2
-rw-r--r--boost/python/converter/pointer_type_id.hpp4
-rwxr-xr-xboost/python/converter/pytype_function.hpp9
-rw-r--r--boost/python/converter/registered.hpp8
-rw-r--r--boost/python/converter/registered_pointee.hpp9
-rwxr-xr-xboost/python/converter/return_from_python.hpp2
-rw-r--r--boost/python/converter/rvalue_from_python_data.hpp8
-rw-r--r--boost/python/data_members.hpp59
-rw-r--r--boost/python/default_call_policies.hpp6
-rw-r--r--boost/python/detail/borrowed_ptr.hpp3
-rw-r--r--boost/python/detail/caller.hpp6
-rw-r--r--boost/python/detail/config.hpp6
-rwxr-xr-xboost/python/detail/convertible.hpp4
-rw-r--r--boost/python/detail/cv_category.hpp6
-rw-r--r--boost/python/detail/dealloc.hpp2
-rw-r--r--boost/python/detail/decorated_type_id.hpp2
-rw-r--r--boost/python/detail/def_helper.hpp6
-rw-r--r--boost/python/detail/defaults_def.hpp4
-rw-r--r--boost/python/detail/destroy.hpp6
-rw-r--r--boost/python/detail/invoke.hpp2
-rw-r--r--boost/python/detail/pointee.hpp2
-rw-r--r--boost/python/detail/result.hpp2
-rw-r--r--boost/python/detail/string_literal.hpp3
-rw-r--r--boost/python/detail/translate_exception.hpp6
-rw-r--r--boost/python/detail/type_traits.hpp110
-rwxr-xr-xboost/python/detail/unwind_type.hpp6
-rwxr-xr-xboost/python/detail/value_arg.hpp5
-rw-r--r--boost/python/detail/value_is_xxx.hpp9
-rw-r--r--boost/python/detail/void_ptr.hpp2
-rw-r--r--boost/python/detail/wrapper_base.hpp9
-rw-r--r--boost/python/exec.hpp16
-rw-r--r--boost/python/init.hpp2
-rw-r--r--boost/python/iterator.hpp6
-rw-r--r--boost/python/lvalue_from_pytype.hpp3
-rw-r--r--boost/python/make_constructor.hpp8
-rw-r--r--boost/python/manage_new_object.hpp4
-rw-r--r--boost/python/numeric.hpp242
-rw-r--r--boost/python/numpy/config.hpp8
-rw-r--r--boost/python/numpy/dtype.hpp7
-rw-r--r--boost/python/numpy/internal.hpp1
-rw-r--r--boost/python/numpy/ndarray.hpp4
-rw-r--r--boost/python/object/class_metadata.hpp36
-rw-r--r--boost/python/object/forward.hpp11
-rw-r--r--boost/python/object/inheritance.hpp7
-rw-r--r--boost/python/object/instance.hpp6
-rw-r--r--boost/python/object/iterator.hpp9
-rw-r--r--boost/python/object/make_instance.hpp5
-rw-r--r--boost/python/object/make_ptr_instance.hpp8
-rw-r--r--boost/python/object/pointer_holder.hpp5
-rw-r--r--boost/python/object_core.hpp17
-rw-r--r--boost/python/opaque_pointer_converter.hpp7
-rw-r--r--boost/python/pointee.hpp10
-rw-r--r--boost/python/reference_existing_object.hpp4
-rw-r--r--boost/python/return_arg.hpp3
-rw-r--r--boost/python/return_by_value.hpp3
-rw-r--r--boost/python/return_opaque_pointer.hpp2
-rw-r--r--boost/python/signature.hpp4
-rw-r--r--boost/python/suite/indexing/detail/indexing_suite_detail.hpp6
-rw-r--r--boost/python/suite/indexing/indexing_suite.hpp10
-rw-r--r--boost/python/to_python_indirect.hpp15
-rw-r--r--boost/python/to_python_value.hpp4
-rw-r--r--boost/python/type_id.hpp2
69 files changed, 339 insertions, 505 deletions
diff --git a/boost/python/arg_from_python.hpp b/boost/python/arg_from_python.hpp
index 05611edbbd..983726b065 100755
--- a/boost/python/arg_from_python.hpp
+++ b/boost/python/arg_from_python.hpp
@@ -9,7 +9,7 @@
# include <boost/python/converter/arg_from_python.hpp>
# if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
|| BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(800))
-# include <boost/type_traits/remove_cv.hpp>
+# include <boost/python/detail/type_traits.hpp>
#endif
namespace boost { namespace python {
@@ -19,7 +19,7 @@ struct arg_from_python
: converter::select_arg_from_python<
# if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
|| BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(800))
- typename boost::remove_cv<T>::type
+ typename detail::remove_cv<T>::type
# else
T
# endif
@@ -28,7 +28,7 @@ struct arg_from_python
typedef typename converter::select_arg_from_python<
# if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
|| BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(800))
- typename boost::remove_cv<T>::type
+ typename detail::remove_cv<T>::type
# else
T
# endif
diff --git a/boost/python/args.hpp b/boost/python/args.hpp
index 55d1283b5a..27731bd8c9 100644
--- a/boost/python/args.hpp
+++ b/boost/python/args.hpp
@@ -11,10 +11,7 @@
# include <boost/config.hpp>
# include <boost/python/detail/preprocessor.hpp>
# include <boost/python/detail/type_list.hpp>
-
-# include <boost/type_traits/is_reference.hpp>
-# include <boost/type_traits/remove_reference.hpp>
-# include <boost/type_traits/remove_cv.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/preprocessor/enum_params.hpp>
# include <boost/preprocessor/repeat.hpp>
@@ -116,9 +113,9 @@ namespace detail
template <class T>
struct is_reference_to_keywords
{
- BOOST_STATIC_CONSTANT(bool, is_ref = is_reference<T>::value);
- typedef typename remove_reference<T>::type deref;
- typedef typename remove_cv<deref>::type key_t;
+ BOOST_STATIC_CONSTANT(bool, is_ref = detail::is_reference<T>::value);
+ typedef typename detail::remove_reference<T>::type deref;
+ typedef typename detail::remove_cv<deref>::type key_t;
BOOST_STATIC_CONSTANT(bool, is_key = is_keywords<key_t>::value);
BOOST_STATIC_CONSTANT(bool, value = (is_ref & is_key));
diff --git a/boost/python/bases.hpp b/boost/python/bases.hpp
index 614d62232b..efcac3f389 100644
--- a/boost/python/bases.hpp
+++ b/boost/python/bases.hpp
@@ -6,8 +6,8 @@
# define BASES_DWA2002321_HPP
# include <boost/python/detail/prefix.hpp>
-# include <boost/type_traits/object_traits.hpp>
# include <boost/python/detail/type_list.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/if.hpp>
# include <boost/mpl/bool.hpp>
# include <boost/preprocessor/enum_params_with_a_default.hpp>
diff --git a/boost/python/cast.hpp b/boost/python/cast.hpp
index bad7e28240..c0dd229e84 100755
--- a/boost/python/cast.hpp
+++ b/boost/python/cast.hpp
@@ -6,9 +6,8 @@
# define CAST_DWA200269_HPP
# include <boost/python/detail/prefix.hpp>
+# include <boost/python/detail/type_traits.hpp>
-# include <boost/type_traits/same_traits.hpp>
-# include <boost/type_traits/cv_traits.hpp>
# include <boost/type.hpp>
# include <boost/python/base_type_traits.hpp>
# include <boost/python/detail/convertible.hpp>
@@ -76,9 +75,9 @@ namespace detail
template <class Source, class Target>
inline Target* upcast_impl(Source* x, Target*)
{
- typedef typename add_cv<Source>::type src_t;
- typedef typename add_cv<Target>::type target_t;
- bool const same = is_same<src_t,target_t>::value;
+ typedef typename detail::add_cv<Source>::type src_t;
+ typedef typename detail::add_cv<Target>::type target_t;
+ bool const same = detail::is_same<src_t,target_t>::value;
return detail::upcaster<same>::execute(x, (Target*)0);
}
diff --git a/boost/python/class.hpp b/boost/python/class.hpp
index 70ca6d01b3..77f915ba0a 100644
--- a/boost/python/class.hpp
+++ b/boost/python/class.hpp
@@ -28,13 +28,10 @@
# include <boost/python/detail/operator_id.hpp>
# include <boost/python/detail/def_helper.hpp>
# include <boost/python/detail/force_instantiate.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/unwrap_type_id.hpp>
# include <boost/python/detail/unwrap_wrapper.hpp>
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/is_member_function_pointer.hpp>
-# include <boost/type_traits/is_polymorphic.hpp>
-
# include <boost/mpl/size.hpp>
# include <boost/mpl/for_each.hpp>
# include <boost/mpl/bool.hpp>
@@ -53,7 +50,6 @@
# ifdef BOOST_PYTHON_NO_MEMBER_POINTER_ORDERING
# include <boost/mpl/and.hpp>
-# include <boost/type_traits/is_member_pointer.hpp>
# endif
namespace boost { namespace python {
@@ -84,8 +80,8 @@ namespace detail
template <class T>
struct is_data_member_pointer
: mpl::and_<
- is_member_pointer<T>
- , mpl::not_<is_member_function_pointer<T> >
+ detail::is_member_pointer<T>
+ , mpl::not_<detail::is_member_function_pointer<T> >
>
{};
@@ -138,11 +134,11 @@ namespace detail
must_be_derived_class_member(Default const&)
{
// https://svn.boost.org/trac/boost/ticket/5803
- //typedef typename assertion<mpl::not_<is_same<Default,Fn> > >::failed test0;
+ //typedef typename assertion<mpl::not_<detail::is_same<Default,Fn> > >::failed test0;
# if !BOOST_WORKAROUND(__MWERKS__, <= 0x2407)
- typedef typename assertion<is_polymorphic<T> >::failed test1 BOOST_ATTRIBUTE_UNUSED;
+ typedef typename assertion<detail::is_polymorphic<T> >::failed test1 BOOST_ATTRIBUTE_UNUSED;
# endif
- typedef typename assertion<is_member_function_pointer<Fn> >::failed test2 BOOST_ATTRIBUTE_UNUSED;
+ typedef typename assertion<detail::is_member_function_pointer<Fn> >::failed test2 BOOST_ATTRIBUTE_UNUSED;
not_a_derived_class_member<Default>(Fn());
}
};
diff --git a/boost/python/converter/arg_from_python.hpp b/boost/python/converter/arg_from_python.hpp
index 61bbaad570..0c0daabc1f 100644
--- a/boost/python/converter/arg_from_python.hpp
+++ b/boost/python/converter/arg_from_python.hpp
@@ -8,8 +8,7 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/python/converter/from_python.hpp>
# include <boost/python/detail/indirect_traits.hpp>
-# include <boost/type_traits/transform_traits.hpp>
-# include <boost/type_traits/cv_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/converter/rvalue_from_python_data.hpp>
# include <boost/mpl/eval_if.hpp>
# include <boost/mpl/if.hpp>
@@ -106,7 +105,7 @@ struct reference_arg_from_python : arg_lvalue_from_python_base
template <class T>
struct arg_rvalue_from_python
{
- typedef typename boost::add_reference<
+ typedef typename boost::python::detail::add_lvalue_reference<
T
// We can't add_const here, or it would be impossible to pass
// auto_ptr<U> args from Python to C++
diff --git a/boost/python/converter/arg_to_python.hpp b/boost/python/converter/arg_to_python.hpp
index 3a19ec4395..bbecae72e5 100755
--- a/boost/python/converter/arg_to_python.hpp
+++ b/boost/python/converter/arg_to_python.hpp
@@ -24,11 +24,7 @@
# include <boost/python/detail/convertible.hpp>
# include <boost/python/detail/string_literal.hpp>
# include <boost/python/detail/value_is_shared_ptr.hpp>
-
-# include <boost/type_traits/cv_traits.hpp>
-# include <boost/type_traits/composite_traits.hpp>
-# include <boost/type_traits/function_traits.hpp>
-
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/or.hpp>
@@ -116,9 +112,9 @@ namespace detail
, typename mpl::if_<
mpl::or_<
- is_function<T>
+ boost::python::detail::is_function<T>
, indirect_traits::is_pointer_to_function<T>
- , is_member_function_pointer<T>
+ , boost::python::detail::is_member_function_pointer<T>
>
, function_arg_to_python<T>
@@ -127,7 +123,7 @@ namespace detail
, object_manager_arg_to_python<T>
, typename mpl::if_<
- is_pointer<T>
+ boost::python::detail::is_pointer<T>
, pointer_deep_arg_to_python<T>
, typename mpl::if_<
diff --git a/boost/python/converter/object_manager.hpp b/boost/python/converter/object_manager.hpp
index 4668245545..b2271a7ea2 100644
--- a/boost/python/converter/object_manager.hpp
+++ b/boost/python/converter/object_manager.hpp
@@ -8,7 +8,7 @@
# include <boost/python/handle.hpp>
# include <boost/python/cast.hpp>
# include <boost/python/converter/pyobject_traits.hpp>
-# include <boost/type_traits/object_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/if.hpp>
# include <boost/python/detail/indirect_traits.hpp>
# include <boost/mpl/bool.hpp>
diff --git a/boost/python/converter/pointer_type_id.hpp b/boost/python/converter/pointer_type_id.hpp
index 963f58f717..49eeda42cb 100644
--- a/boost/python/converter/pointer_type_id.hpp
+++ b/boost/python/converter/pointer_type_id.hpp
@@ -6,7 +6,7 @@
# define POINTER_TYPE_ID_DWA2002222_HPP
# include <boost/python/type_id.hpp>
-# include <boost/type_traits/composite_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace converter {
@@ -59,7 +59,7 @@ template <class T>
type_info pointer_type_id(T(*)() = 0)
{
return detail::pointer_typeid_select<
- is_reference<T>::value
+ boost::python::detail::is_lvalue_reference<T>::value
>::execute((T(*)())0);
}
diff --git a/boost/python/converter/pytype_function.hpp b/boost/python/converter/pytype_function.hpp
index 95d0f66d46..8e0a4e7995 100755
--- a/boost/python/converter/pytype_function.hpp
+++ b/boost/python/converter/pytype_function.hpp
@@ -8,6 +8,7 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/python/converter/registered.hpp>
# include <boost/python/detail/unwind_type.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -53,7 +54,7 @@ inline python::type_info unwind_type_id_(boost::type<void>* = 0, mpl::true_* =0)
template <class T>
inline python::type_info unwind_type_id(boost::type<T>* p= 0)
{
- return unwind_type_id_(p, (mpl::bool_<boost::is_void<T>::value >*)0 );
+ return unwind_type_id_(p, (mpl::bool_<boost::python::detail::is_void<T>::value >*)0 );
}
}
@@ -64,7 +65,7 @@ struct expected_pytype_for_arg
static PyTypeObject const *get_pytype()
{
const converter::registration *r=converter::registry::query(
- detail::unwind_type_id_((boost::type<T>*)0, (mpl::bool_<boost::is_void<T>::value >*)0 )
+ detail::unwind_type_id_((boost::type<T>*)0, (mpl::bool_<boost::python::detail::is_void<T>::value >*)0 )
);
return r ? r->expected_from_python_type(): 0;
}
@@ -77,7 +78,7 @@ struct registered_pytype
static PyTypeObject const *get_pytype()
{
const converter::registration *r=converter::registry::query(
- detail::unwind_type_id_((boost::type<T>*) 0, (mpl::bool_<boost::is_void<T>::value >*)0 )
+ detail::unwind_type_id_((boost::type<T>*) 0, (mpl::bool_<boost::python::detail::is_void<T>::value >*)0 )
);
return r ? r->m_class_object: 0;
}
@@ -111,7 +112,7 @@ struct to_python_target_type
static PyTypeObject const *get_pytype()
{
const converter::registration *r=converter::registry::query(
- detail::unwind_type_id_((boost::type<T>*)0, (mpl::bool_<boost::is_void<T>::value >*)0 )
+ detail::unwind_type_id_((boost::type<T>*)0, (mpl::bool_<boost::python::detail::is_void<T>::value >*)0 )
);
return r ? r->to_python_target_type(): 0;
}
diff --git a/boost/python/converter/registered.hpp b/boost/python/converter/registered.hpp
index a622250dca..73f4d98466 100644
--- a/boost/python/converter/registered.hpp
+++ b/boost/python/converter/registered.hpp
@@ -10,9 +10,7 @@
#include <boost/python/type_id.hpp>
#include <boost/python/converter/registry.hpp>
#include <boost/python/converter/registrations.hpp>
-#include <boost/type_traits/transform_traits.hpp>
-#include <boost/type_traits/cv_traits.hpp>
-#include <boost/type_traits/is_void.hpp>
+#include <boost/python/detail/type_traits.hpp>
#include <boost/detail/workaround.hpp>
#include <boost/type.hpp>
#include <memory>
@@ -44,8 +42,8 @@ namespace detail
template <class T>
struct registered
: detail::registered_base<
- typename add_reference<
- typename add_cv<T>::type
+ typename boost::python::detail::add_lvalue_reference<
+ typename boost::python::detail::add_cv<T>::type
>::type
>
{
diff --git a/boost/python/converter/registered_pointee.hpp b/boost/python/converter/registered_pointee.hpp
index 974cb6d810..28b2988c7f 100644
--- a/boost/python/converter/registered_pointee.hpp
+++ b/boost/python/converter/registered_pointee.hpp
@@ -7,8 +7,7 @@
# include <boost/python/converter/registered.hpp>
# include <boost/python/converter/pointer_type_id.hpp>
# include <boost/python/converter/registry.hpp>
-# include <boost/type_traits/transform_traits.hpp>
-# include <boost/type_traits/cv_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace converter {
@@ -17,9 +16,9 @@ struct registration;
template <class T>
struct registered_pointee
: registered<
- typename remove_pointer<
- typename remove_cv<
- typename remove_reference<T>::type
+ typename boost::python::detail::remove_pointer<
+ typename boost::python::detail::remove_cv<
+ typename boost::python::detail::remove_reference<T>::type
>::type
>::type
>
diff --git a/boost/python/converter/return_from_python.hpp b/boost/python/converter/return_from_python.hpp
index 5db9748545..a995a2905a 100755
--- a/boost/python/converter/return_from_python.hpp
+++ b/boost/python/converter/return_from_python.hpp
@@ -14,7 +14,7 @@
# include <boost/python/detail/void_return.hpp>
# include <boost/python/errors.hpp>
# include <boost/python/handle.hpp>
-# include <boost/type_traits/has_trivial_copy.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/and.hpp>
# include <boost/mpl/bool.hpp>
diff --git a/boost/python/converter/rvalue_from_python_data.hpp b/boost/python/converter/rvalue_from_python_data.hpp
index 471a5255b6..acb38f8498 100644
--- a/boost/python/converter/rvalue_from_python_data.hpp
+++ b/boost/python/converter/rvalue_from_python_data.hpp
@@ -8,9 +8,8 @@
# include <boost/python/converter/constructor_function.hpp>
# include <boost/python/detail/referent_storage.hpp>
# include <boost/python/detail/destroy.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/static_assert.hpp>
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/add_cv.hpp>
# include <cstddef>
// Data management for potential rvalue conversions from Python to C++
@@ -78,7 +77,7 @@ struct rvalue_from_python_storage
// Storage for the result, in case an rvalue must be constructed
typename python::detail::referent_storage<
- typename add_reference<T>::type
+ typename boost::python::detail::add_lvalue_reference<T>::type
>::type storage;
};
@@ -110,7 +109,8 @@ struct rvalue_from_python_data : rvalue_from_python_storage<T>
// Destroys any object constructed in the storage.
~rvalue_from_python_data();
private:
- typedef typename add_reference<typename add_cv<T>::type>::type ref_type;
+ typedef typename boost::python::detail::add_lvalue_reference<
+ typename boost::python::detail::add_cv<T>::type>::type ref_type;
};
//
diff --git a/boost/python/data_members.hpp b/boost/python/data_members.hpp
index 5d3309cf97..989f7d7f93 100644
--- a/boost/python/data_members.hpp
+++ b/boost/python/data_members.hpp
@@ -19,14 +19,7 @@
# include <boost/python/detail/indirect_traits.hpp>
# include <boost/python/detail/not_specified.hpp>
# include <boost/python/detail/value_arg.hpp>
-
-# include <boost/type_traits/add_const.hpp>
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/is_member_pointer.hpp>
-
-# if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
-# include <boost/type_traits/remove_cv.hpp>
-# endif
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/eval_if.hpp>
# include <boost/mpl/if.hpp>
@@ -147,20 +140,20 @@ namespace detail
// boost::python::make_getter are used to dispatch behavior. The
// third argument is a workaround for a CWPro8 partial ordering bug
// with pointers to data members. It should be convertible to
- // mpl::true_ iff the first argument is a pointer-to-member, and
- // mpl::false_ otherwise. The fourth argument is for compilers
+ // detail::true_ iff the first argument is a pointer-to-member, and
+ // detail::false_ otherwise. The fourth argument is for compilers
// which don't support partial ordering at all and should always be
// passed 0L.
- //
+
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template <class D, class P>
- inline object make_getter(D& d, P& p, mpl::false_, ...);
+ inline object make_getter(D& d, P& p, detail::false_, ...);
#endif
// Handle non-member pointers with policies
template <class D, class Policies>
- inline object make_getter(D* d, Policies const& policies, mpl::false_, int)
+ inline object make_getter(D* d, Policies const& policies, detail::false_, int)
{
return python::make_function(
detail::datum<D>(d), policies, mpl::vector1<D&>()
@@ -169,18 +162,18 @@ namespace detail
// Handle non-member pointers without policies
template <class D>
- inline object make_getter(D* d, not_specified, mpl::false_, long)
+ inline object make_getter(D* d, not_specified, detail::false_, long)
{
typedef typename default_datum_getter_policy<D>::type policies;
- return detail::make_getter(d, policies(), mpl::false_(), 0);
+ return detail::make_getter(d, policies(), detail::false_(), 0);
}
// Handle pointers-to-members with policies
template <class C, class D, class Policies>
- inline object make_getter(D C::*pm, Policies const& policies, mpl::true_, int)
+ inline object make_getter(D C::*pm, Policies const& policies, detail::true_, int)
{
#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
- typedef typename remove_cv<C>::type Class;
+ typedef typename detail::remove_cv<C>::type Class;
#else
typedef C Class;
#endif
@@ -193,18 +186,18 @@ namespace detail
// Handle pointers-to-members without policies
template <class C, class D>
- inline object make_getter(D C::*pm, not_specified, mpl::true_, long)
+ inline object make_getter(D C::*pm, not_specified, detail::true_, long)
{
typedef typename default_member_getter_policy<D>::type policies;
- return detail::make_getter(pm, policies(), mpl::true_(), 0);
+ return detail::make_getter(pm, policies(), detail::true_(), 0);
}
// Handle references
template <class D, class P>
- inline object make_getter(D& d, P& p, mpl::false_, ...)
+ inline object make_getter(D& d, P& p, detail::false_, ...)
{
// Just dispatch to the handler for pointer types.
- return detail::make_getter(&d, p, mpl::false_(), 0L);
+ return detail::make_getter(&d, p, detail::false_(), 0L);
}
//
@@ -217,7 +210,7 @@ namespace detail
// Handle non-member pointers
template <class D, class Policies>
- inline object make_setter(D* p, Policies const& policies, mpl::false_, int)
+ inline object make_setter(D* p, Policies const& policies, detail::false_, int)
{
return python::make_function(
detail::datum<D>(p), policies, mpl::vector2<void,D const&>()
@@ -226,7 +219,7 @@ namespace detail
// Handle pointers-to-members
template <class C, class D, class Policies>
- inline object make_setter(D C::*pm, Policies const& policies, mpl::true_, int)
+ inline object make_setter(D C::*pm, Policies const& policies, detail::true_, int)
{
return python::make_function(
detail::member<D,C>(pm)
@@ -237,9 +230,9 @@ namespace detail
// Handle references
template <class D, class Policies>
- inline object make_setter(D& x, Policies const& policies, mpl::false_, ...)
+ inline object make_setter(D& x, Policies const& policies, detail::false_, ...)
{
- return detail::make_setter(&x, policies, mpl::false_(), 0L);
+ return detail::make_setter(&x, policies, detail::false_(), 0L);
}
}
@@ -253,13 +246,13 @@ namespace detail
template <class D, class Policies>
inline object make_getter(D& d, Policies const& policies)
{
- return detail::make_getter(d, policies, is_member_pointer<D>(), 0L);
+ return detail::make_getter(d, policies, detail::is_member_pointer<D>(), 0L);
}
template <class D, class Policies>
inline object make_getter(D const& d, Policies const& policies)
{
- return detail::make_getter(d, policies, is_member_pointer<D>(), 0L);
+ return detail::make_getter(d, policies, detail::is_member_pointer<D>(), 0L);
}
template <class D>
@@ -267,7 +260,7 @@ inline object make_getter(D& x)
{
detail::not_specified policy
= detail::not_specified(); // suppress a SunPro warning
- return detail::make_getter(x, policy, is_member_pointer<D>(), 0L);
+ return detail::make_getter(x, policy, detail::is_member_pointer<D>(), 0L);
}
# if !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
@@ -276,7 +269,7 @@ inline object make_getter(D const& d)
{
detail::not_specified policy
= detail::not_specified(); // Suppress a SunPro warning
- return detail::make_getter(d, policy, is_member_pointer<D>(), 0L);
+ return detail::make_getter(d, policy, detail::is_member_pointer<D>(), 0L);
}
# endif
@@ -290,26 +283,26 @@ inline object make_getter(D const& d)
template <class D, class Policies>
inline object make_setter(D& x, Policies const& policies)
{
- return detail::make_setter(x, policies, is_member_pointer<D>(), 0);
+ return detail::make_setter(x, policies, detail::is_member_pointer<D>(), 0);
}
template <class D, class Policies>
inline object make_setter(D const& x, Policies const& policies)
{
- return detail::make_setter(x, policies, is_member_pointer<D>(), 0);
+ return detail::make_setter(x, policies, detail::is_member_pointer<D>(), 0);
}
template <class D>
inline object make_setter(D& x)
{
- return detail::make_setter(x, default_call_policies(), is_member_pointer<D>(), 0);
+ return detail::make_setter(x, default_call_policies(), detail::is_member_pointer<D>(), 0);
}
# if !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template <class D>
inline object make_setter(D const& x)
{
- return detail::make_setter(x, default_call_policies(), is_member_pointer<D>(), 0);
+ return detail::make_setter(x, default_call_policies(), detail::is_member_pointer<D>(), 0);
}
# endif
diff --git a/boost/python/default_call_policies.hpp b/boost/python/default_call_policies.hpp
index fcc242a924..c882257348 100644
--- a/boost/python/default_call_policies.hpp
+++ b/boost/python/default_call_policies.hpp
@@ -8,10 +8,8 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/mpl/if.hpp>
# include <boost/python/to_python_value.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/value_arg.hpp>
-# include <boost/type_traits/transform_traits.hpp>
-# include <boost/type_traits/is_pointer.hpp>
-# include <boost/type_traits/is_reference.hpp>
# include <boost/mpl/or.hpp>
# include <boost/mpl/front.hpp>
@@ -64,7 +62,7 @@ struct default_result_converter
struct apply
{
typedef typename mpl::if_<
- mpl::or_<is_pointer<R>, is_reference<R> >
+ mpl::or_<detail::is_pointer<R>, detail::is_reference<R> >
, detail::specify_a_return_value_policy_to_wrap_functions_returning<R>
, boost::python::to_python_value<
typename detail::value_arg<R>::type
diff --git a/boost/python/detail/borrowed_ptr.hpp b/boost/python/detail/borrowed_ptr.hpp
index d91d05c90f..7d78739ed9 100644
--- a/boost/python/detail/borrowed_ptr.hpp
+++ b/boost/python/detail/borrowed_ptr.hpp
@@ -8,8 +8,7 @@
# include <boost/config.hpp>
# include <boost/type.hpp>
# include <boost/mpl/if.hpp>
-# include <boost/type_traits/object_traits.hpp>
-# include <boost/type_traits/cv_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/tag.hpp>
namespace boost { namespace python { namespace detail {
diff --git a/boost/python/detail/caller.hpp b/boost/python/detail/caller.hpp
index e479bf427d..c572d35aa9 100644
--- a/boost/python/detail/caller.hpp
+++ b/boost/python/detail/caller.hpp
@@ -16,6 +16,7 @@
# include <boost/python/detail/invoke.hpp>
# include <boost/python/detail/signature.hpp>
# include <boost/python/detail/preprocessor.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/arg_from_python.hpp>
# include <boost/python/converter/context_result_converter.hpp>
@@ -31,9 +32,6 @@
# include <boost/compressed_pair.hpp>
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/is_convertible.hpp>
-
# include <boost/mpl/apply.hpp>
# include <boost/mpl/eval_if.hpp>
# include <boost/mpl/identity.hpp>
@@ -236,7 +234,7 @@ struct caller_arity<N>
typedef typename select_result_converter<Policies, rtype>::type result_converter;
static const signature_element ret = {
- (boost::is_void<rtype>::value ? "void" : type_id<rtype>().name())
+ (is_void<rtype>::value ? "void" : type_id<rtype>().name())
, &detail::converter_target_type<result_converter>::get_pytype
, boost::detail::indirect_traits::is_reference_to_non_const<rtype>::value
};
diff --git a/boost/python/detail/config.hpp b/boost/python/detail/config.hpp
index c92ecb32b0..3e4b7c9e54 100644
--- a/boost/python/detail/config.hpp
+++ b/boost/python/detail/config.hpp
@@ -105,7 +105,11 @@
// Set the name of our library, this will get undef'ed by auto_link.hpp
// once it's done with it:
//
-#define BOOST_LIB_NAME boost_python
+#if PY_MAJOR_VERSION == 2
+# define BOOST_LIB_NAME boost_python
+#elif PY_MAJOR_VERSION == 3
+# define BOOST_LIB_NAME boost_python3
+#endif
//
// If we're importing code from a dll, then tell auto_link.hpp about it:
//
diff --git a/boost/python/detail/convertible.hpp b/boost/python/detail/convertible.hpp
index 2ce552f5f7..1ff350ec24 100755
--- a/boost/python/detail/convertible.hpp
+++ b/boost/python/detail/convertible.hpp
@@ -7,11 +7,11 @@
# if defined(__EDG_VERSION__) && __EDG_VERSION__ <= 241
# include <boost/mpl/if.hpp>
-# include <boost/type_traits/conversion_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# endif
// Supplies a runtime is_convertible check which can be used with tag
-// dispatching to work around the Metrowerks Pro7 limitation with boost::is_convertible
+// dispatching to work around the Metrowerks Pro7 limitation with boost/std::is_convertible
namespace boost { namespace python { namespace detail {
typedef char* yes_convertible;
diff --git a/boost/python/detail/cv_category.hpp b/boost/python/detail/cv_category.hpp
index d32dd0fdbe..eb5a8eb9da 100644
--- a/boost/python/detail/cv_category.hpp
+++ b/boost/python/detail/cv_category.hpp
@@ -4,7 +4,7 @@
// http://www.boost.org/LICENSE_1_0.txt)
#ifndef CV_CATEGORY_DWA200222_HPP
# define CV_CATEGORY_DWA200222_HPP
-# include <boost/type_traits/cv_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace detail {
@@ -26,8 +26,8 @@ struct cv_category
// BOOST_STATIC_CONSTANT(bool, c = is_const<T>::value);
// BOOST_STATIC_CONSTANT(bool, v = is_volatile<T>::value);
typedef cv_tag<
- ::boost::is_const<T>::value
- , ::boost::is_volatile<T>::value
+ is_const<T>::value
+ , is_volatile<T>::value
> type;
};
diff --git a/boost/python/detail/dealloc.hpp b/boost/python/detail/dealloc.hpp
index f2d914b18c..ce07926ee1 100644
--- a/boost/python/detail/dealloc.hpp
+++ b/boost/python/detail/dealloc.hpp
@@ -1,4 +1,4 @@
-// Copyright Gottfried Ganßauge 2003.
+// Copyright Gottfried Ganßauge 2003.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
diff --git a/boost/python/detail/decorated_type_id.hpp b/boost/python/detail/decorated_type_id.hpp
index 535508b43d..2596f3104a 100644
--- a/boost/python/detail/decorated_type_id.hpp
+++ b/boost/python/detail/decorated_type_id.hpp
@@ -7,7 +7,7 @@
# include <boost/python/type_id.hpp>
# include <boost/python/detail/indirect_traits.hpp>
-# include <boost/type_traits/cv_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace detail {
diff --git a/boost/python/detail/def_helper.hpp b/boost/python/detail/def_helper.hpp
index 92db09ed7b..24f9c5cdb2 100644
--- a/boost/python/detail/def_helper.hpp
+++ b/boost/python/detail/def_helper.hpp
@@ -6,12 +6,11 @@
# define DEF_HELPER_DWA200287_HPP
# include <boost/python/args.hpp>
-# include <boost/type_traits/same_traits.hpp>
# include <boost/python/detail/indirect_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/not.hpp>
# include <boost/mpl/and.hpp>
# include <boost/mpl/or.hpp>
-# include <boost/type_traits/add_reference.hpp>
# include <boost/mpl/lambda.hpp>
# include <boost/mpl/apply.hpp>
# include <boost/tuple/tuple.hpp>
@@ -73,7 +72,8 @@ namespace detail
struct tuple_extract_base_select
{
typedef typename Tuple::head_type head_type;
- typedef typename mpl::apply1<Predicate, typename add_reference<head_type>::type>::type match_t;
+ typedef typename mpl::apply1<Predicate,
+ typename add_lvalue_reference<head_type>::type>::type match_t;
BOOST_STATIC_CONSTANT(bool, match = match_t::value);
typedef typename tuple_extract_impl<match>::template apply<Tuple,Predicate> type;
};
diff --git a/boost/python/detail/defaults_def.hpp b/boost/python/detail/defaults_def.hpp
index 68799f83e6..a721b76794 100644
--- a/boost/python/detail/defaults_def.hpp
+++ b/boost/python/detail/defaults_def.hpp
@@ -12,7 +12,7 @@
#define DEFAULTS_DEF_JDG20020811_HPP
#include <boost/python/detail/defaults_gen.hpp>
-#include <boost/type_traits.hpp>
+#include <boost/python/detail/type_traits.hpp>
#include <boost/mpl/front.hpp>
#include <boost/mpl/size.hpp>
#include <boost/static_assert.hpp>
@@ -238,7 +238,7 @@ namespace detail
typedef typename OverloadsT::non_void_return_type non_void_return_type;
typedef typename mpl::if_c<
- boost::is_same<void, return_type>::value
+ is_same<void, return_type>::value
, void_return_type
, non_void_return_type
>::type stubs_type;
diff --git a/boost/python/detail/destroy.hpp b/boost/python/detail/destroy.hpp
index 3ea6455330..d35b2b536e 100644
--- a/boost/python/detail/destroy.hpp
+++ b/boost/python/detail/destroy.hpp
@@ -5,7 +5,7 @@
#ifndef DESTROY_DWA2002221_HPP
# define DESTROY_DWA2002221_HPP
-# include <boost/type_traits/is_array.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/detail/workaround.hpp>
namespace boost { namespace python { namespace detail {
@@ -30,7 +30,7 @@ struct value_destroyer<true>
for (T const volatile* p = first; p != first + sizeof(A)/sizeof(T); ++p)
{
value_destroyer<
- boost::is_array<T>::value
+ is_array<T>::value
>::execute(p);
}
}
@@ -48,7 +48,7 @@ inline void destroy_referent_impl(void* p, T& (*)())
// note: cv-qualification needed for MSVC6
// must come *before* T for metrowerks
value_destroyer<
- (boost::is_array<T>::value)
+ (is_array<T>::value)
>::execute((const volatile T*)p);
}
diff --git a/boost/python/detail/invoke.hpp b/boost/python/detail/invoke.hpp
index 939fa11818..4c5296ff12 100644
--- a/boost/python/detail/invoke.hpp
+++ b/boost/python/detail/invoke.hpp
@@ -11,8 +11,6 @@
# include <boost/python/detail/preprocessor.hpp>
# include <boost/python/detail/none.hpp>
-# include <boost/type_traits/is_member_function_pointer.hpp>
-
# include <boost/preprocessor/iterate.hpp>
# include <boost/preprocessor/facilities/intercept.hpp>
# include <boost/preprocessor/repetition/enum_trailing_params.hpp>
diff --git a/boost/python/detail/pointee.hpp b/boost/python/detail/pointee.hpp
index e18c1f49b6..e786b37626 100644
--- a/boost/python/detail/pointee.hpp
+++ b/boost/python/detail/pointee.hpp
@@ -5,7 +5,7 @@
#ifndef POINTEE_DWA2002323_HPP
# define POINTEE_DWA2002323_HPP
-# include <boost/type_traits/object_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace detail {
diff --git a/boost/python/detail/result.hpp b/boost/python/detail/result.hpp
index 8ccc3c5029..2390693a88 100644
--- a/boost/python/detail/result.hpp
+++ b/boost/python/detail/result.hpp
@@ -11,8 +11,8 @@
# include <boost/type.hpp>
# include <boost/python/detail/preprocessor.hpp>
+# include <boost/python/detail/type_traits.hpp>
-# include <boost/type_traits/object_traits.hpp>
# include <boost/mpl/if.hpp>
# include <boost/preprocessor/comma_if.hpp>
diff --git a/boost/python/detail/string_literal.hpp b/boost/python/detail/string_literal.hpp
index a56e72ec6b..0961ec7c4e 100644
--- a/boost/python/detail/string_literal.hpp
+++ b/boost/python/detail/string_literal.hpp
@@ -7,8 +7,7 @@
# include <cstddef>
# include <boost/type.hpp>
-# include <boost/type_traits/array_traits.hpp>
-# include <boost/type_traits/same_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/bool.hpp>
# include <boost/detail/workaround.hpp>
diff --git a/boost/python/detail/translate_exception.hpp b/boost/python/detail/translate_exception.hpp
index df7ec2dd6c..877db2b2c6 100644
--- a/boost/python/detail/translate_exception.hpp
+++ b/boost/python/detail/translate_exception.hpp
@@ -6,11 +6,9 @@
# define TRANSLATE_EXCEPTION_TDS20091020_HPP
# include <boost/python/detail/exception_handler.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/call_traits.hpp>
-# include <boost/type_traits/add_const.hpp>
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/remove_reference.hpp>
# include <boost/function/function0.hpp>
@@ -33,7 +31,7 @@ struct translate_exception
typename add_const<ExceptionType>::type
>::type exception_non_ref;
# else
- typedef typename add_reference<
+ typedef typename add_lvalue_reference<
typename add_const<ExceptionType>::type
>::type exception_cref;
# endif
diff --git a/boost/python/detail/type_traits.hpp b/boost/python/detail/type_traits.hpp
new file mode 100644
index 0000000000..df940c7ea2
--- /dev/null
+++ b/boost/python/detail/type_traits.hpp
@@ -0,0 +1,110 @@
+// Copyright Shreyans Doshi 2017.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_PYTHON_DETAIL_TYPE_TRAITS_HPP
+# define BOOST_PYTHON_DETAIL_TYPE_TRAITS_HPP
+
+
+#if __cplusplus < 201103L
+# include <boost/type_traits/transform_traits.hpp>
+# include <boost/type_traits/same_traits.hpp>
+# include <boost/type_traits/cv_traits.hpp>
+# include <boost/type_traits/is_polymorphic.hpp>
+# include <boost/type_traits/composite_traits.hpp>
+# include <boost/type_traits/conversion_traits.hpp>
+# include <boost/type_traits/add_pointer.hpp>
+# include <boost/type_traits/remove_pointer.hpp>
+# include <boost/type_traits/is_void.hpp>
+# include <boost/type_traits/object_traits.hpp>
+# include <boost/type_traits/add_lvalue_reference.hpp>
+# include <boost/type_traits/function_traits.hpp>
+# include <boost/type_traits/is_scalar.hpp>
+# include <boost/type_traits/alignment_traits.hpp>
+# include <boost/mpl/bool.hpp>
+#else
+# include <type_traits>
+#endif
+
+# include <boost/type_traits/is_base_and_derived.hpp>
+# include <boost/type_traits/alignment_traits.hpp>
+# include <boost/type_traits/has_trivial_copy.hpp>
+
+
+namespace boost { namespace python { namespace detail {
+
+#if __cplusplus < 201103L
+ using boost::alignment_of;
+ using boost::add_const;
+ using boost::add_cv;
+ using boost::add_lvalue_reference;
+ using boost::add_pointer;
+
+ using boost::is_array;
+ using boost::is_class;
+ using boost::is_const;
+ using boost::is_convertible;
+ using boost::is_enum;
+ using boost::is_function;
+ using boost::is_integral;
+ using boost::is_lvalue_reference;
+ using boost::is_member_function_pointer;
+ using boost::is_member_pointer;
+ using boost::is_pointer;
+ using boost::is_polymorphic;
+ using boost::is_reference;
+ using boost::is_same;
+ using boost::is_scalar;
+ using boost::is_union;
+ using boost::is_void;
+ using boost::is_volatile;
+
+ using boost::remove_reference;
+ using boost::remove_pointer;
+ using boost::remove_cv;
+ using boost::remove_const;
+
+ using boost::mpl::true_;
+ using boost::mpl::false_;
+#else
+ using std::alignment_of;
+ using std::add_const;
+ using std::add_cv;
+ using std::add_lvalue_reference;
+ using std::add_pointer;
+
+ using std::is_array;
+ using std::is_class;
+ using std::is_const;
+ using std::is_convertible;
+ using std::is_enum;
+ using std::is_function;
+ using std::is_integral;
+ using std::is_lvalue_reference;
+ using std::is_member_function_pointer;
+ using std::is_member_pointer;
+ using std::is_pointer;
+ using std::is_polymorphic;
+ using std::is_reference;
+ using std::is_same;
+ using std::is_scalar;
+ using std::is_union;
+ using std::is_void;
+ using std::is_volatile;
+
+ using std::remove_reference;
+ using std::remove_pointer;
+ using std::remove_cv;
+ using std::remove_const;
+
+ using true_ = std::integral_constant<bool, true>;
+ using false_ = std::integral_constant<bool, false>;
+#endif
+ using boost::is_base_and_derived;
+ using boost::type_with_alignment;
+ using boost::has_trivial_copy;
+}}} // namespace boost::python::detail
+
+
+#endif //BOOST_DETAIL_TYPE_TRAITS_HPP
diff --git a/boost/python/detail/unwind_type.hpp b/boost/python/detail/unwind_type.hpp
index 9a997c9dbd..f6cdab64fe 100755
--- a/boost/python/detail/unwind_type.hpp
+++ b/boost/python/detail/unwind_type.hpp
@@ -7,7 +7,7 @@
# include <boost/python/detail/cv_category.hpp>
# include <boost/python/detail/indirect_traits.hpp>
-# include <boost/type_traits/object_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace detail {
@@ -155,10 +155,10 @@ unwind_type(boost::type<U>*p =0, Generator* =0)
#endif
{
BOOST_STATIC_CONSTANT(int, indirection
- = (boost::is_pointer<U>::value ? pointer_ : 0)
+ = (is_pointer<U>::value ? pointer_ : 0)
+ (indirect_traits::is_reference_to_pointer<U>::value
? reference_to_pointer_
- : boost::is_reference<U>::value
+ : is_lvalue_reference<U>::value
? reference_
: 0));
diff --git a/boost/python/detail/value_arg.hpp b/boost/python/detail/value_arg.hpp
index 747588d6fd..2c938dacca 100755
--- a/boost/python/detail/value_arg.hpp
+++ b/boost/python/detail/value_arg.hpp
@@ -6,8 +6,7 @@
# include <boost/python/detail/copy_ctor_mutates_rhs.hpp>
# include <boost/mpl/if.hpp>
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/add_const.hpp>
+# include <boost/python/detail/indirect_traits.hpp>
namespace boost { namespace python { namespace detail {
@@ -16,7 +15,7 @@ struct value_arg
: mpl::if_<
copy_ctor_mutates_rhs<T>
, T
- , typename add_reference<
+ , typename add_lvalue_reference<
typename add_const<T>::type
>::type
>
diff --git a/boost/python/detail/value_is_xxx.hpp b/boost/python/detail/value_is_xxx.hpp
index fbb9defd0b..e270f89ca3 100644
--- a/boost/python/detail/value_is_xxx.hpp
+++ b/boost/python/detail/value_is_xxx.hpp
@@ -9,11 +9,11 @@
# include <boost/mpl/bool.hpp>
# include <boost/preprocessor/enum_params.hpp>
-
-# include <boost/type_traits/remove_reference.hpp>
-# include <boost/type_traits/remove_cv.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/is_xxx.hpp>
+namespace boost { namespace python { namespace detail {
+
# define BOOST_PYTHON_VALUE_IS_XXX_DEF(name, qualified_name, nargs) \
template <class X_> \
struct value_is_##name \
@@ -24,9 +24,10 @@ struct value_is_##name \
typename remove_reference<X_>::type \
>::type \
>::value); \
- typedef mpl::bool_<value> type; \
+ typedef mpl::bool_<value> type; \
\
};
+}}} // namespace boost::python::detail
#endif // VALUE_IS_XXX_DWA2003224_HPP
diff --git a/boost/python/detail/void_ptr.hpp b/boost/python/detail/void_ptr.hpp
index 06f680104d..5543b23a4a 100644
--- a/boost/python/detail/void_ptr.hpp
+++ b/boost/python/detail/void_ptr.hpp
@@ -5,7 +5,7 @@
#ifndef VOID_PTR_DWA200239_HPP
# define VOID_PTR_DWA200239_HPP
-# include <boost/type_traits/remove_cv.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace detail {
diff --git a/boost/python/detail/wrapper_base.hpp b/boost/python/detail/wrapper_base.hpp
index 2a79e0c528..60ac99436e 100644
--- a/boost/python/detail/wrapper_base.hpp
+++ b/boost/python/detail/wrapper_base.hpp
@@ -5,8 +5,7 @@
# define WRAPPER_BASE_DWA2004722_HPP
# include <boost/python/detail/prefix.hpp>
-# include <boost/type_traits/is_polymorphic.hpp>
-# include <boost/mpl/bool.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -21,14 +20,14 @@ namespace detail
inline PyObject* get_owner(wrapper_base const volatile& w);
inline PyObject*
- owner_impl(void const volatile* /*x*/, mpl::false_)
+ owner_impl(void const volatile* /*x*/, detail::false_)
{
return 0;
}
template <class T>
inline PyObject*
- owner_impl(T const volatile* x, mpl::true_);
+ owner_impl(T const volatile* x, detail::true_);
template <class T>
inline PyObject*
@@ -59,7 +58,7 @@ namespace detail
{
template <class T>
inline PyObject*
- owner_impl(T const volatile* x, mpl::true_)
+ owner_impl(T const volatile* x, detail::true_)
{
if (wrapper_base const volatile* w = dynamic_cast<wrapper_base const volatile*>(x))
{
diff --git a/boost/python/exec.hpp b/boost/python/exec.hpp
index 3ed1e15ce9..32a74991a7 100644
--- a/boost/python/exec.hpp
+++ b/boost/python/exec.hpp
@@ -20,6 +20,10 @@ object
BOOST_PYTHON_DECL
eval(str string, object global = object(), object local = object());
+object
+BOOST_PYTHON_DECL
+eval(char const *string, object global = object(), object local = object());
+
// Execute an individual python statement from str.
// global and local are the global and local scopes respectively,
// used during execution.
@@ -27,6 +31,10 @@ object
BOOST_PYTHON_DECL
exec_statement(str string, object global = object(), object local = object());
+object
+BOOST_PYTHON_DECL
+exec_statement(char const *string, object global = object(), object local = object());
+
// Execute python source code from str.
// global and local are the global and local scopes respectively,
// used during execution.
@@ -34,6 +42,10 @@ object
BOOST_PYTHON_DECL
exec(str string, object global = object(), object local = object());
+object
+BOOST_PYTHON_DECL
+exec(char const *string, object global = object(), object local = object());
+
// Execute python source code from file filename.
// global and local are the global and local scopes respectively,
// used during execution.
@@ -41,6 +53,10 @@ object
BOOST_PYTHON_DECL
exec_file(str filename, object global = object(), object local = object());
+object
+BOOST_PYTHON_DECL
+exec_file(char const *filename, object global = object(), object local = object());
+
}
}
diff --git a/boost/python/init.hpp b/boost/python/init.hpp
index 792de58e80..0ee763cc26 100644
--- a/boost/python/init.hpp
+++ b/boost/python/init.hpp
@@ -27,7 +27,7 @@
#include <boost/mpl/joint_view.hpp>
#include <boost/mpl/back.hpp>
-#include <boost/type_traits/is_same.hpp>
+#include <boost/python/detail/type_traits.hpp>
#include <boost/preprocessor/enum_params_with_a_default.hpp>
#include <boost/preprocessor/enum_params.hpp>
diff --git a/boost/python/iterator.hpp b/boost/python/iterator.hpp
index a64a920735..7c06ca2320 100644
--- a/boost/python/iterator.hpp
+++ b/boost/python/iterator.hpp
@@ -8,12 +8,10 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/python/detail/target.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/object/iterator.hpp>
# include <boost/python/object_core.hpp>
-# include <boost/type_traits/cv_traits.hpp>
-# include <boost/type_traits/transform_traits.hpp>
-
# if defined(BOOST_MSVC) && (BOOST_MSVC == 1400) /*
> warning C4180: qualifier applied to function type has no meaning; ignored
Peter Dimov wrote:
@@ -80,7 +78,7 @@ namespace detail
template <class T>
struct iterators
: detail::iterators_impl<
- boost::is_const<T>::value
+ detail::is_const<T>::value
>::template apply<T>
{
};
diff --git a/boost/python/lvalue_from_pytype.hpp b/boost/python/lvalue_from_pytype.hpp
index e15dfbbb85..59d31b89cf 100644
--- a/boost/python/lvalue_from_pytype.hpp
+++ b/boost/python/lvalue_from_pytype.hpp
@@ -13,6 +13,7 @@
# include <boost/python/type_id.hpp>
# include <boost/python/converter/registry.hpp>
# include <boost/python/detail/void_ptr.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -35,7 +36,7 @@ namespace detail
{
static inline void* execute(PyObject* op)
{
- typedef typename boost::add_reference<U>::type param;
+ typedef typename add_lvalue_reference<U>::type param;
return &Extractor::execute(
boost::python::detail::void_ptr_to_reference(
op, (param(*)())0 )
diff --git a/boost/python/make_constructor.hpp b/boost/python/make_constructor.hpp
index 92a7951d35..053d050cd6 100644
--- a/boost/python/make_constructor.hpp
+++ b/boost/python/make_constructor.hpp
@@ -43,19 +43,19 @@ namespace detail
private:
template <class U>
- void dispatch(U* x, mpl::true_) const
+ void dispatch(U* x, detail::true_) const
{
#if __cplusplus < 201103L
std::auto_ptr<U> owner(x);
- dispatch(owner, mpl::false_());
+ dispatch(owner, detail::false_());
#else
std::unique_ptr<U> owner(x);
- dispatch(std::move(owner), mpl::false_());
+ dispatch(std::move(owner), detail::false_());
#endif
}
template <class Ptr>
- void dispatch(Ptr x, mpl::false_) const
+ void dispatch(Ptr x, detail::false_) const
{
typedef typename pointee<Ptr>::type value_type;
typedef objects::pointer_holder<Ptr,value_type> holder;
diff --git a/boost/python/manage_new_object.hpp b/boost/python/manage_new_object.hpp
index 9585b13a6f..9ff341c1ac 100644
--- a/boost/python/manage_new_object.hpp
+++ b/boost/python/manage_new_object.hpp
@@ -7,9 +7,9 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/python/detail/indirect_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/if.hpp>
# include <boost/python/to_python_indirect.hpp>
-# include <boost/type_traits/composite_traits.hpp>
namespace boost { namespace python {
@@ -29,7 +29,7 @@ struct manage_new_object
struct apply
{
typedef typename mpl::if_c<
- boost::is_pointer<T>::value
+ detail::is_pointer<T>::value
, to_python_indirect<T, detail::make_owning_holder>
, detail::manage_new_object_requires_a_pointer_return_type<T>
>::type type;
diff --git a/boost/python/numeric.hpp b/boost/python/numeric.hpp
deleted file mode 100644
index ab4db8c32e..0000000000
--- a/boost/python/numeric.hpp
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef NUMARRAY_DWA2002922_HPP
-# define NUMARRAY_DWA2002922_HPP
-
-# include <boost/python/detail/prefix.hpp>
-
-# include <boost/python/tuple.hpp>
-# include <boost/python/str.hpp>
-# include <boost/preprocessor/iteration/local.hpp>
-# include <boost/preprocessor/cat.hpp>
-# include <boost/preprocessor/repetition/enum.hpp>
-# include <boost/preprocessor/repetition/enum_params.hpp>
-# include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-namespace boost { namespace python { namespace numeric {
-
-class array;
-
-namespace aux
-{
- struct BOOST_PYTHON_DECL array_base : object
- {
-# define BOOST_PP_LOCAL_MACRO(n) \
- array_base(BOOST_PP_ENUM_PARAMS_Z(1, n, object const& x));
-# define BOOST_PP_LOCAL_LIMITS (1, 7)
-# include BOOST_PP_LOCAL_ITERATE()
-
- object argmax(long axis=-1);
- object argmin(long axis=-1);
- object argsort(long axis=-1);
- object astype(object const& type = object());
- void byteswap();
- object copy() const;
- object diagonal(long offset = 0, long axis1 = 0, long axis2 = 1) const;
- void info() const;
- bool is_c_array() const;
- bool isbyteswapped() const;
- array new_(object type) const;
- void sort();
- object trace(long offset = 0, long axis1 = 0, long axis2 = 1) const;
- object type() const;
- char typecode() const;
-
- object factory(
- object const& sequence = object()
- , object const& typecode = object()
- , bool copy = true
- , bool savespace = false
- , object type = object()
- , object shape = object());
-
- object getflat() const;
- long getrank() const;
- object getshape() const;
- bool isaligned() const;
- bool iscontiguous() const;
- long itemsize() const;
- long nelements() const;
- object nonzero() const;
-
- void put(object const& indices, object const& values);
-
- void ravel();
-
- object repeat(object const& repeats, long axis=0);
-
- void resize(object const& shape);
-
- void setflat(object const& flat);
- void setshape(object const& shape);
-
- void swapaxes(long axis1, long axis2);
-
- object take(object const& sequence, long axis = 0) const;
-
- void tofile(object const& file) const;
-
- str tostring() const;
-
- void transpose(object const& axes = object());
-
- object view() const;
-
- public: // implementation detail - do not touch.
- BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(array_base, object);
- };
-
- struct BOOST_PYTHON_DECL array_object_manager_traits
- {
- static bool check(PyObject* obj);
- static detail::new_non_null_reference adopt(PyObject* obj);
- static PyTypeObject const* get_pytype() ;
- };
-} // namespace aux
-
-class array : public aux::array_base
-{
- typedef aux::array_base base;
- public:
-
- object astype() { return base::astype(); }
-
- template <class Type>
- object astype(Type const& type_)
- {
- return base::astype(object(type_));
- }
-
- template <class Type>
- array new_(Type const& type_) const
- {
- return base::new_(object(type_));
- }
-
- template <class Sequence>
- void resize(Sequence const& x)
- {
- base::resize(object(x));
- }
-
-# define BOOST_PP_LOCAL_MACRO(n) \
- void resize(BOOST_PP_ENUM_PARAMS_Z(1, n, long x)) \
- { \
- resize(make_tuple(BOOST_PP_ENUM_PARAMS_Z(1, n, x))); \
- }
-# define BOOST_PP_LOCAL_LIMITS (1, BOOST_PYTHON_MAX_ARITY)
-# include BOOST_PP_LOCAL_ITERATE()
-
- template <class Sequence>
- void setshape(Sequence const& x)
- {
- base::setshape(object(x));
- }
-
-# define BOOST_PP_LOCAL_MACRO(n) \
- void setshape(BOOST_PP_ENUM_PARAMS_Z(1, n, long x)) \
- { \
- setshape(make_tuple(BOOST_PP_ENUM_PARAMS_Z(1, n, x))); \
- }
-# define BOOST_PP_LOCAL_LIMITS (1, BOOST_PYTHON_MAX_ARITY)
-# include BOOST_PP_LOCAL_ITERATE()
-
- template <class Indices, class Values>
- void put(Indices const& indices, Values const& values)
- {
- base::put(object(indices), object(values));
- }
-
- template <class Sequence>
- object take(Sequence const& sequence, long axis = 0)
- {
- return base::take(object(sequence), axis);
- }
-
- template <class File>
- void tofile(File const& f) const
- {
- base::tofile(object(f));
- }
-
- object factory()
- {
- return base::factory();
- }
-
- template <class Sequence>
- object factory(Sequence const& sequence)
- {
- return base::factory(object(sequence));
- }
-
- template <class Sequence, class Typecode>
- object factory(
- Sequence const& sequence
- , Typecode const& typecode_
- , bool copy = true
- , bool savespace = false
- )
- {
- return base::factory(object(sequence), object(typecode_), copy, savespace);
- }
-
- template <class Sequence, class Typecode, class Type>
- object factory(
- Sequence const& sequence
- , Typecode const& typecode_
- , bool copy
- , bool savespace
- , Type const& type
- )
- {
- return base::factory(object(sequence), object(typecode_), copy, savespace, object(type));
- }
-
- template <class Sequence, class Typecode, class Type, class Shape>
- object factory(
- Sequence const& sequence
- , Typecode const& typecode_
- , bool copy
- , bool savespace
- , Type const& type
- , Shape const& shape
- )
- {
- return base::factory(object(sequence), object(typecode_), copy, savespace, object(type), object(shape));
- }
-
-# define BOOST_PYTHON_ENUM_AS_OBJECT(z, n, x) object(BOOST_PP_CAT(x,n))
-# define BOOST_PP_LOCAL_MACRO(n) \
- template <BOOST_PP_ENUM_PARAMS_Z(1, n, class T)> \
- explicit array(BOOST_PP_ENUM_BINARY_PARAMS_Z(1, n, T, const& x)) \
- : base(BOOST_PP_ENUM_1(n, BOOST_PYTHON_ENUM_AS_OBJECT, x)) \
- {}
-# define BOOST_PP_LOCAL_LIMITS (1, 7)
-# include BOOST_PP_LOCAL_ITERATE()
-# undef BOOST_PYTHON_AS_OBJECT
-
- static BOOST_PYTHON_DECL void set_module_and_type(char const* package_name = 0, char const* type_attribute_name = 0);
- static BOOST_PYTHON_DECL std::string get_module_name();
-
- public: // implementation detail -- for internal use only
- BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(array, base);
-};
-
-} // namespace boost::python::numeric
-
-namespace converter
-{
- template <>
- struct object_manager_traits< numeric::array >
- : numeric::aux::array_object_manager_traits
- {
- BOOST_STATIC_CONSTANT(bool, is_specialized = true);
- };
-}
-
-}} // namespace boost::python
-
-#endif // NUMARRAY_DWA2002922_HPP
diff --git a/boost/python/numpy/config.hpp b/boost/python/numpy/config.hpp
index 6f39d3ce86..97178906e0 100644
--- a/boost/python/numpy/config.hpp
+++ b/boost/python/numpy/config.hpp
@@ -62,7 +62,11 @@
// Set the name of our library, this will get undef'ed by auto_link.hpp
// once it's done with it:
//
-#define BOOST_LIB_NAME boost_numpy
+#if PY_MAJOR_VERSION == 2
+# define BOOST_LIB_NAME boost_numpy
+#elif PY_MAJOR_VERSION == 3
+# define BOOST_LIB_NAME boost_numpy3
+#endif
//
// If we're importing code from a dll, then tell auto_link.hpp about it:
//
@@ -75,4 +79,6 @@
#include <boost/config/auto_link.hpp>
#endif // auto-linking disabled
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+
#endif // CONFIG_NUMPY20170215_H_
diff --git a/boost/python/numpy/dtype.hpp b/boost/python/numpy/dtype.hpp
index b9e95f9beb..4673745e57 100644
--- a/boost/python/numpy/dtype.hpp
+++ b/boost/python/numpy/dtype.hpp
@@ -13,11 +13,10 @@
*/
#include <boost/python.hpp>
-#include <boost/python/numpy/numpy_object_mgr_traits.hpp>
#include <boost/python/numpy/config.hpp>
-
+#include <boost/python/numpy/numpy_object_mgr_traits.hpp>
#include <boost/mpl/for_each.hpp>
-#include <boost/type_traits/add_pointer.hpp>
+#include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace numpy {
@@ -90,7 +89,7 @@ struct builtin_dtype<T,true> {
};
template <>
-struct builtin_dtype<bool,true> {
+struct BOOST_NUMPY_DECL builtin_dtype<bool,true> {
static dtype get();
};
diff --git a/boost/python/numpy/internal.hpp b/boost/python/numpy/internal.hpp
index fed31cbb08..c24718f0ae 100644
--- a/boost/python/numpy/internal.hpp
+++ b/boost/python/numpy/internal.hpp
@@ -15,6 +15,7 @@
*/
#include <boost/python.hpp>
+#include <boost/python/numpy/config.hpp>
#ifdef BOOST_PYTHON_NUMPY_INTERNAL
#define NO_IMPORT_ARRAY
#define NO_IMPORT_UFUNC
diff --git a/boost/python/numpy/ndarray.hpp b/boost/python/numpy/ndarray.hpp
index e5b6a9e94b..98a4cb15a1 100644
--- a/boost/python/numpy/ndarray.hpp
+++ b/boost/python/numpy/ndarray.hpp
@@ -13,7 +13,7 @@
#include <boost/python.hpp>
#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_integral.hpp>
+#include <boost/python/detail/type_traits.hpp>
#include <boost/python/numpy/numpy_object_mgr_traits.hpp>
#include <boost/python/numpy/dtype.hpp>
#include <boost/python/numpy/config.hpp>
@@ -176,7 +176,7 @@ ndarray from_data_impl(void * data,
Container strides,
object const & owner,
bool writeable,
- typename boost::enable_if< boost::is_integral<typename Container::value_type> >::type * enabled = NULL)
+ typename boost::enable_if< boost::python::detail::is_integral<typename Container::value_type> >::type * enabled = NULL)
{
std::vector<Py_intptr_t> shape_(shape.begin(),shape.end());
std::vector<Py_intptr_t> strides_(strides.begin(), strides.end());
diff --git a/boost/python/object/class_metadata.hpp b/boost/python/object/class_metadata.hpp
index 8e750b85cf..93303ecb60 100644
--- a/boost/python/object/class_metadata.hpp
+++ b/boost/python/object/class_metadata.hpp
@@ -17,14 +17,11 @@
#include <boost/python/detail/force_instantiate.hpp>
#include <boost/python/detail/not_specified.hpp>
+#include <boost/python/detail/type_traits.hpp>
#include <boost/python/has_back_reference.hpp>
#include <boost/python/bases.hpp>
-#include <boost/type_traits/add_pointer.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_polymorphic.hpp>
-
#include <boost/mpl/if.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/bool.hpp>
@@ -35,9 +32,6 @@
#include <boost/mpl/single_view.hpp>
#include <boost/mpl/assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/type_traits/is_convertible.hpp>
#include <boost/noncopyable.hpp>
#include <boost/detail/workaround.hpp>
@@ -56,7 +50,7 @@ struct register_base_of
template <class Base>
inline void operator()(Base*) const
{
- BOOST_MPL_ASSERT_NOT((is_same<Base,Derived>));
+ BOOST_MPL_ASSERT_NOT((boost::python::detail::is_same<Base,Derived>));
// Register the Base class
register_dynamic_id<Base>();
@@ -65,14 +59,14 @@ struct register_base_of
register_conversion<Derived,Base>(false);
// Register the down-cast, if appropriate.
- this->register_downcast((Base*)0, is_polymorphic<Base>());
+ this->register_downcast((Base*)0, boost::python::detail::is_polymorphic<Base>());
}
private:
- static inline void register_downcast(void*, mpl::false_) {}
+ static inline void register_downcast(void*, boost::python::detail::false_) {}
template <class Base>
- static inline void register_downcast(Base*, mpl::true_)
+ static inline void register_downcast(Base*, boost::python::detail::true_)
{
register_conversion<Base, Derived>(true);
}
@@ -98,7 +92,7 @@ inline void register_shared_ptr_from_python_and_casts(T*, Bases)
// interface to mpl::for_each to avoid an MSVC 6 bug.
//
register_dynamic_id<T>();
- mpl::for_each(register_base_of<T>(), (Bases*)0, (add_pointer<mpl::_>*)0);
+ mpl::for_each(register_base_of<T>(), (Bases*)0, (boost::python::detail::add_pointer<mpl::_>*)0);
}
//
@@ -109,7 +103,7 @@ struct select_held_type
: mpl::if_<
mpl::or_<
python::detail::specifies_bases<T>
- , is_same<T,noncopyable>
+ , boost::python::detail::is_same<T,noncopyable>
>
, Prev
, T
@@ -156,9 +150,9 @@ struct class_metadata
>::type bases;
typedef mpl::or_<
- is_same<X1,noncopyable>
- , is_same<X2,noncopyable>
- , is_same<X3,noncopyable>
+ boost::python::detail::is_same<X1,noncopyable>
+ , boost::python::detail::is_same<X2,noncopyable>
+ , boost::python::detail::is_same<X3,noncopyable>
> is_noncopyable;
//
@@ -167,11 +161,11 @@ struct class_metadata
// Compute the actual type that will be held in the Holder.
typedef typename mpl::if_<
- is_same<held_type_arg,python::detail::not_specified>, T, held_type_arg
+ boost::python::detail::is_same<held_type_arg,python::detail::not_specified>, T, held_type_arg
>::type held_type;
// Determine if the object will be held by value
- typedef mpl::bool_<is_convertible<held_type*,T*>::value> use_value_holder;
+ typedef mpl::bool_<boost::python::detail::is_convertible<held_type*,T*>::value> use_value_holder;
// Compute the "wrapped type", that is, if held_type is a smart
// pointer, we're talking about the pointee.
@@ -185,7 +179,7 @@ struct class_metadata
typedef mpl::bool_<
mpl::or_<
has_back_reference<T>
- , is_same<held_type_arg,T>
+ , boost::python::detail::is_same<held_type_arg,T>
, is_base_and_derived<T,wrapped>
>::value
> use_back_reference;
@@ -214,7 +208,7 @@ struct class_metadata
template <class T2>
inline static void register_aux(python::wrapper<T2>*)
{
- typedef typename mpl::not_<is_same<T2,wrapped> >::type use_callback;
+ typedef typename mpl::not_<boost::python::detail::is_same<T2,wrapped> >::type use_callback;
class_metadata::register_aux2((T2*)0, use_callback());
}
@@ -243,7 +237,7 @@ struct class_metadata
inline static void maybe_register_pointer_to_python(...) {}
#ifndef BOOST_PYTHON_NO_PY_SIGNATURES
- inline static void maybe_register_pointer_to_python(void*,void*,mpl::true_*)
+ inline static void maybe_register_pointer_to_python(void*,void*,mpl::true_*)
{
objects::copy_class_object(python::type_id<T>(), python::type_id<back_reference<T const &> >());
objects::copy_class_object(python::type_id<T>(), python::type_id<back_reference<T &> >());
diff --git a/boost/python/object/forward.hpp b/boost/python/object/forward.hpp
index 30613d8ebd..c6515bb55b 100644
--- a/boost/python/object/forward.hpp
+++ b/boost/python/object/forward.hpp
@@ -6,11 +6,9 @@
# define FORWARD_DWA20011215_HPP
# include <boost/mpl/if.hpp>
-# include <boost/type_traits/is_scalar.hpp>
-# include <boost/type_traits/add_const.hpp>
-# include <boost/type_traits/add_reference.hpp>
# include <boost/ref.hpp>
# include <boost/python/detail/value_arg.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/copy_ctor_mutates_rhs.hpp>
# include <boost/mpl/or.hpp>
@@ -22,7 +20,8 @@ namespace boost { namespace python { namespace objects {
template <class T>
struct reference_to_value
{
- typedef typename add_reference<typename add_const<T>::type>::type reference;
+ typedef typename boost::python::detail::add_lvalue_reference<typename
+ boost::python::detail::add_const<T>::type>::type reference;
reference_to_value(reference x) : m_value(x) {}
reference get() const { return m_value; }
@@ -36,7 +35,7 @@ struct reference_to_value
template <class T>
struct forward
: mpl::if_<
- mpl::or_<python::detail::copy_ctor_mutates_rhs<T>, is_scalar<T> >
+ mpl::or_<python::detail::copy_ctor_mutates_rhs<T>, boost::python::detail::is_scalar<T> >
, T
, reference_to_value<T>
>
@@ -65,7 +64,7 @@ struct unforward_cref
template<typename T>
struct unforward_cref<reference_to_value<T> >
- : add_reference<typename add_const<T>::type>
+ : boost::python::detail::add_lvalue_reference<typename boost::python::detail::add_const<T>::type>
{
};
diff --git a/boost/python/object/inheritance.hpp b/boost/python/object/inheritance.hpp
index b49a0442e2..90e56f0c1d 100644
--- a/boost/python/object/inheritance.hpp
+++ b/boost/python/object/inheritance.hpp
@@ -8,9 +8,8 @@
# include <boost/python/type_id.hpp>
# include <boost/shared_ptr.hpp>
# include <boost/mpl/if.hpp>
-# include <boost/type_traits/is_polymorphic.hpp>
-# include <boost/type_traits/is_base_and_derived.hpp>
# include <boost/detail/workaround.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python { namespace objects {
@@ -58,7 +57,7 @@ struct non_polymorphic_id_generator
template <class T>
struct dynamic_id_generator
: mpl::if_<
- boost::is_polymorphic<T>
+ boost::python::detail::is_polymorphic<T>
, boost::python::objects::polymorphic_id_generator<T>
, boost::python::objects::non_polymorphic_id_generator<T>
>
@@ -104,7 +103,7 @@ struct implicit_cast_generator
template <class Source, class Target>
struct cast_generator
: mpl::if_<
- is_base_and_derived<Target,Source>
+ boost::python::detail::is_base_and_derived<Target,Source>
, implicit_cast_generator<Source,Target>
, dynamic_cast_generator<Source,Target>
>
diff --git a/boost/python/object/instance.hpp b/boost/python/object/instance.hpp
index 9c28d6822d..27b91a1e5f 100644
--- a/boost/python/object/instance.hpp
+++ b/boost/python/object/instance.hpp
@@ -6,7 +6,7 @@
# define INSTANCE_DWA200295_HPP
# include <boost/python/detail/prefix.hpp>
-# include <boost/type_traits/alignment_traits.hpp>
+
# include <cstddef>
namespace boost { namespace python
@@ -25,8 +25,8 @@ struct instance
PyObject* weakrefs;
instance_holder* objects;
- typedef typename type_with_alignment<
- ::boost::alignment_of<Data>::value
+ typedef typename boost::python::detail::type_with_alignment<
+ boost::python::detail::alignment_of<Data>::value
>::type align_t;
union
diff --git a/boost/python/object/iterator.hpp b/boost/python/object/iterator.hpp
index db5224713f..e2f65721fb 100644
--- a/boost/python/object/iterator.hpp
+++ b/boost/python/object/iterator.hpp
@@ -6,6 +6,7 @@
# define ITERATOR_DWA2002510_HPP
# include <boost/python/detail/prefix.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/class.hpp>
# include <boost/python/return_value_policy.hpp>
@@ -24,10 +25,6 @@
# include <boost/type.hpp>
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/add_const.hpp>
-
# include <boost/detail/iterator.hpp>
namespace boost { namespace python { namespace objects {
@@ -202,8 +199,8 @@ inline object make_iterator_function(
)
{
typedef typename Accessor1::result_type iterator;
- typedef typename add_const<iterator>::type iterator_const;
- typedef typename add_reference<iterator_const>::type iterator_cref;
+ typedef typename boost::python::detail::add_const<iterator>::type iterator_const;
+ typedef typename boost::python::detail::add_lvalue_reference<iterator_const>::type iterator_cref;
return detail::make_iterator_function(
get_start
diff --git a/boost/python/object/make_instance.hpp b/boost/python/object/make_instance.hpp
index 5f2630adc7..31ec08f7c3 100644
--- a/boost/python/object/make_instance.hpp
+++ b/boost/python/object/make_instance.hpp
@@ -9,10 +9,10 @@
# include <boost/python/object/instance.hpp>
# include <boost/python/converter/registered.hpp>
# include <boost/python/detail/decref_guard.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/none.hpp>
# include <boost/mpl/assert.hpp>
# include <boost/mpl/or.hpp>
-# include <boost/type_traits/is_union.hpp>
namespace boost { namespace python { namespace objects {
@@ -24,7 +24,8 @@ struct make_instance_impl
template <class Arg>
static inline PyObject* execute(Arg& x)
{
- BOOST_MPL_ASSERT((mpl::or_<is_class<T>, is_union<T> >));
+ BOOST_MPL_ASSERT((mpl::or_<boost::python::detail::is_class<T>,
+ boost::python::detail::is_union<T> >));
PyTypeObject* type = Derived::get_class_object(x);
diff --git a/boost/python/object/make_ptr_instance.hpp b/boost/python/object/make_ptr_instance.hpp
index 3a28190293..21089c6b88 100644
--- a/boost/python/object/make_ptr_instance.hpp
+++ b/boost/python/object/make_ptr_instance.hpp
@@ -7,7 +7,7 @@
# include <boost/python/object/make_instance.hpp>
# include <boost/python/converter/registry.hpp>
-# include <boost/type_traits/is_polymorphic.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/get_pointer.hpp>
# include <boost/detail/workaround.hpp>
# include <typeinfo>
@@ -47,7 +47,7 @@ struct make_ptr_instance
return 0; // means "return None".
PyTypeObject* derived = get_derived_class_object(
- BOOST_DEDUCED_TYPENAME is_polymorphic<U>::type(), p);
+ BOOST_DEDUCED_TYPENAME boost::python::detail::is_polymorphic<U>::type(), p);
if (derived)
return derived;
@@ -55,7 +55,7 @@ struct make_ptr_instance
}
template <class U>
- static inline PyTypeObject* get_derived_class_object(mpl::true_, U const volatile* x)
+ static inline PyTypeObject* get_derived_class_object(boost::python::detail::true_, U const volatile* x)
{
converter::registration const* r = converter::registry::query(
type_info(typeid(*get_pointer(x)))
@@ -64,7 +64,7 @@ struct make_ptr_instance
}
template <class U>
- static inline PyTypeObject* get_derived_class_object(mpl::false_, U*)
+ static inline PyTypeObject* get_derived_class_object(boost::python::detail::false_, U*)
{
return 0;
}
diff --git a/boost/python/object/pointer_holder.hpp b/boost/python/object/pointer_holder.hpp
index b28cbd83c8..c5caefe62c 100644
--- a/boost/python/object/pointer_holder.hpp
+++ b/boost/python/object/pointer_holder.hpp
@@ -21,6 +21,7 @@
# include <boost/python/detail/wrapper_base.hpp>
# include <boost/python/detail/force_instantiate.hpp>
# include <boost/python/detail/preprocessor.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/if.hpp>
@@ -35,8 +36,6 @@
# include <boost/detail/workaround.hpp>
-# include <boost/type_traits/remove_const.hpp>
-
namespace boost { namespace python {
template <class T> class wrapper;
@@ -128,7 +127,7 @@ inline pointer_holder_back_reference<Pointer,Value>::pointer_holder_back_referen
template <class Pointer, class Value>
void* pointer_holder<Pointer, Value>::holds(type_info dst_t, bool null_ptr_only)
{
- typedef typename boost::remove_const< Value >::type non_const_value;
+ typedef typename boost::python::detail::remove_const< Value >::type non_const_value;
if (dst_t == python::type_id<Pointer>()
&& !(null_ptr_only && get_pointer(this->m_p))
diff --git a/boost/python/object_core.hpp b/boost/python/object_core.hpp
index 209310ffd7..16480d0d89 100644
--- a/boost/python/object_core.hpp
+++ b/boost/python/object_core.hpp
@@ -31,10 +31,7 @@
# include <boost/python/detail/is_xxx.hpp>
# include <boost/python/detail/string_literal.hpp>
# include <boost/python/detail/def_helper_fwd.hpp>
-
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/is_convertible.hpp>
-# include <boost/type_traits/remove_reference.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -165,7 +162,7 @@ namespace api
// It's too late to specify anything other than docstrings if
// the callable object is already wrapped.
BOOST_STATIC_ASSERT(
- (is_same<char const*,DocStringT>::value
+ (detail::is_same<char const*,DocStringT>::value
|| detail::is_string_literal<DocStringT const>::value));
objects::add_to_namespace(cl, name, this->derived_visitor(), helper.doc());
@@ -208,8 +205,8 @@ namespace api
template <class T, class U>
struct is_derived
- : is_convertible<
- typename remove_reference<T>::type*
+ : boost::python::detail::is_convertible<
+ typename detail::remove_reference<T>::type*
, U const*
>
{};
@@ -280,14 +277,14 @@ namespace api
struct object_initializer_impl
{
static PyObject*
- get(object const& x, mpl::true_)
+ get(object const& x, detail::true_)
{
return python::incref(x.ptr());
}
template <class T>
static PyObject*
- get(T const& x, mpl::false_)
+ get(T const& x, detail::false_)
{
return python::incref(converter::arg_to_python<T>(x).get());
}
@@ -298,7 +295,7 @@ namespace api
{
template <class Policies>
static PyObject*
- get(proxy<Policies> const& x, mpl::false_)
+ get(proxy<Policies> const& x, detail::false_)
{
return python::incref(x.operator object().ptr());
}
diff --git a/boost/python/opaque_pointer_converter.hpp b/boost/python/opaque_pointer_converter.hpp
index e95c49bbfe..120985202b 100644
--- a/boost/python/opaque_pointer_converter.hpp
+++ b/boost/python/opaque_pointer_converter.hpp
@@ -1,4 +1,4 @@
-// Copyright Gottfried Ganßauge 2003..2006.
+// Copyright Gottfried Ganßauge 2003..2006.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
@@ -13,14 +13,11 @@
# include <boost/python/to_python_converter.hpp>
# include <boost/python/converter/registrations.hpp>
# include <boost/python/detail/dealloc.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/none.hpp>
# include <boost/python/type_id.hpp>
# include <boost/python/errors.hpp>
-# include <boost/type_traits/remove_pointer.hpp>
-# include <boost/type_traits/is_pointer.hpp>
-# include <boost/type_traits/is_void.hpp>
-
# include <boost/implicit_cast.hpp>
# include <boost/mpl/eval_if.hpp>
diff --git a/boost/python/pointee.hpp b/boost/python/pointee.hpp
index ab8bb87439..7ec01e0824 100644
--- a/boost/python/pointee.hpp
+++ b/boost/python/pointee.hpp
@@ -6,9 +6,7 @@
# define POINTEE_DWA2002323_HPP
# include <boost/python/detail/prefix.hpp>
-
-# include <boost/type_traits/object_traits.hpp>
-# include <boost/type_traits/remove_pointer.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -17,7 +15,7 @@ namespace detail
template <bool is_ptr = true>
struct pointee_impl
{
- template <class T> struct apply : remove_pointer<T> {};
+ template <class T> struct apply : detail::remove_pointer<T> {};
};
template <>
@@ -33,11 +31,11 @@ namespace detail
template <class T>
struct pointee
: detail::pointee_impl<
- ::boost::is_pointer<T>::value
+ detail::is_pointer<T>::value
>::template apply<T>
{
};
-}} // namespace boost::python::detail
+}} // namespace boost::python
#endif // POINTEE_DWA2002323_HPP
diff --git a/boost/python/reference_existing_object.hpp b/boost/python/reference_existing_object.hpp
index 8c2410715b..4c8344070b 100644
--- a/boost/python/reference_existing_object.hpp
+++ b/boost/python/reference_existing_object.hpp
@@ -9,7 +9,7 @@
# include <boost/python/detail/indirect_traits.hpp>
# include <boost/mpl/if.hpp>
# include <boost/python/to_python_indirect.hpp>
-# include <boost/type_traits/composite_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -31,7 +31,7 @@ struct reference_existing_object
struct apply
{
BOOST_STATIC_CONSTANT(
- bool, ok = is_pointer<T>::value || is_reference<T>::value);
+ bool, ok = detail::is_pointer<T>::value || detail::is_reference<T>::value);
typedef typename mpl::if_c<
ok
diff --git a/boost/python/return_arg.hpp b/boost/python/return_arg.hpp
index e869a58d12..de23993987 100644
--- a/boost/python/return_arg.hpp
+++ b/boost/python/return_arg.hpp
@@ -12,8 +12,7 @@
# include <boost/python/converter/pytype_function.hpp>
#endif
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/add_const.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/mpl/int.hpp>
# include <boost/mpl/at.hpp>
diff --git a/boost/python/return_by_value.hpp b/boost/python/return_by_value.hpp
index 593fc59cfe..42d7076d17 100644
--- a/boost/python/return_by_value.hpp
+++ b/boost/python/return_by_value.hpp
@@ -8,8 +8,7 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/python/to_python_value.hpp>
-# include <boost/type_traits/add_reference.hpp>
-# include <boost/type_traits/add_const.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/python/detail/value_arg.hpp>
diff --git a/boost/python/return_opaque_pointer.hpp b/boost/python/return_opaque_pointer.hpp
index cf544d8030..4654e3bd51 100644
--- a/boost/python/return_opaque_pointer.hpp
+++ b/boost/python/return_opaque_pointer.hpp
@@ -1,4 +1,4 @@
-// Copyright Gottfried Ganßauge 2003.
+// Copyright Gottfried Ganßauge 2003.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
diff --git a/boost/python/signature.hpp b/boost/python/signature.hpp
index de4c512614..9b323a2823 100644
--- a/boost/python/signature.hpp
+++ b/boost/python/signature.hpp
@@ -14,9 +14,9 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/mpl/if.hpp>
-# include <boost/type_traits/is_convertible.hpp>
# include <boost/python/detail/preprocessor.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <boost/preprocessor/repeat.hpp>
# include <boost/preprocessor/enum.hpp>
# include <boost/preprocessor/enum_params.hpp>
@@ -42,7 +42,7 @@ template <class C1, class C2>
struct most_derived
{
typedef typename mpl::if_<
- is_convertible<C1*,C2*>
+ detail::is_convertible<C1*,C2*>
, C1
, C2
>::type type;
diff --git a/boost/python/suite/indexing/detail/indexing_suite_detail.hpp b/boost/python/suite/indexing/detail/indexing_suite_detail.hpp
index 70df8a7273..eb8b81c0a3 100644
--- a/boost/python/suite/indexing/detail/indexing_suite_detail.hpp
+++ b/boost/python/suite/indexing/detail/indexing_suite_detail.hpp
@@ -11,7 +11,7 @@
# include <boost/get_pointer.hpp>
# include <boost/detail/binary_search.hpp>
# include <boost/numeric/conversion/cast.hpp>
-# include <boost/type_traits/is_pointer.hpp>
+# include <boost/python/detail/type_traits.hpp>
# include <vector>
# include <map>
#include <iostream>
@@ -465,14 +465,14 @@ namespace boost { namespace python { namespace detail {
template <class DataType>
static object
- base_get_item_helper(DataType const& p, mpl::true_)
+ base_get_item_helper(DataType const& p, detail::true_)
{
return object(ptr(p));
}
template <class DataType>
static object
- base_get_item_helper(DataType const& x, mpl::false_)
+ base_get_item_helper(DataType const& x, detail::false_)
{
return object(x);
}
diff --git a/boost/python/suite/indexing/indexing_suite.hpp b/boost/python/suite/indexing/indexing_suite.hpp
index 40301fdff5..3469a2a40f 100644
--- a/boost/python/suite/indexing/indexing_suite.hpp
+++ b/boost/python/suite/indexing/indexing_suite.hpp
@@ -14,7 +14,7 @@
# include <boost/python/iterator.hpp>
# include <boost/mpl/or.hpp>
# include <boost/mpl/not.hpp>
-# include <boost/type_traits/is_same.hpp>
+# include <boost/python/detail/type_traits.hpp>
namespace boost { namespace python {
@@ -122,10 +122,10 @@ namespace boost { namespace python {
mpl::bool_<NoProxy>
, mpl::not_<is_class<Data> >
, typename mpl::or_<
- is_same<Data, std::string>
- , is_same<Data, std::complex<float> >
- , is_same<Data, std::complex<double> >
- , is_same<Data, std::complex<long double> > >::type>
+ detail::is_same<Data, std::string>
+ , detail::is_same<Data, std::complex<float> >
+ , detail::is_same<Data, std::complex<double> >
+ , detail::is_same<Data, std::complex<long double> > >::type>
no_proxy;
typedef detail::container_element<Container, Index, DerivedPolicies>
diff --git a/boost/python/to_python_indirect.hpp b/boost/python/to_python_indirect.hpp
index af6ed33b9b..212e1db3d4 100644
--- a/boost/python/to_python_indirect.hpp
+++ b/boost/python/to_python_indirect.hpp
@@ -18,10 +18,7 @@
# include <boost/python/refcount.hpp>
-# include <boost/type_traits/is_pointer.hpp>
-# include <boost/type_traits/is_polymorphic.hpp>
-
-# include <boost/mpl/bool.hpp>
+# include <boost/python/detail/type_traits.hpp>
# if defined(__ICL) && __ICL < 600
# include <boost/shared_ptr.hpp>
@@ -38,7 +35,7 @@ struct to_python_indirect
inline PyObject*
operator()(U const& ref) const
{
- return this->execute(const_cast<U&>(ref), is_pointer<U>());
+ return this->execute(const_cast<U&>(ref), detail::is_pointer<U>());
}
#ifndef BOOST_PYTHON_NO_PY_SIGNATURES
inline PyTypeObject const*
@@ -49,20 +46,20 @@ struct to_python_indirect
#endif
private:
template <class U>
- inline PyObject* execute(U* ptr, mpl::true_) const
+ inline PyObject* execute(U* ptr, detail::true_) const
{
// No special NULL treatment for references
if (ptr == 0)
return python::detail::none();
else
- return this->execute(*ptr, mpl::false_());
+ return this->execute(*ptr, detail::false_());
}
template <class U>
- inline PyObject* execute(U const& x, mpl::false_) const
+ inline PyObject* execute(U const& x, detail::false_) const
{
U* const p = &const_cast<U&>(x);
- if (is_polymorphic<U>::value)
+ if (detail::is_polymorphic<U>::value)
{
if (PyObject* o = detail::wrapper_base_::owner(p))
return incref(o);
diff --git a/boost/python/to_python_value.hpp b/boost/python/to_python_value.hpp
index 2681f8a39c..2066d3a2ab 100644
--- a/boost/python/to_python_value.hpp
+++ b/boost/python/to_python_value.hpp
@@ -19,14 +19,12 @@
#include <boost/python/converter/object_manager.hpp>
#include <boost/python/converter/shared_ptr_to_python.hpp>
+#include <boost/python/detail/type_traits.hpp>
#include <boost/python/detail/value_is_shared_ptr.hpp>
#include <boost/python/detail/value_arg.hpp>
-#include <boost/type_traits/transform_traits.hpp>
-
#include <boost/mpl/if.hpp>
#include <boost/mpl/or.hpp>
-#include <boost/type_traits/is_const.hpp>
namespace boost { namespace python {
diff --git a/boost/python/type_id.hpp b/boost/python/type_id.hpp
index 38b7f7b453..601601c311 100644
--- a/boost/python/type_id.hpp
+++ b/boost/python/type_id.hpp
@@ -14,7 +14,7 @@
# include <ostream>
# include <boost/static_assert.hpp>
# include <boost/detail/workaround.hpp>
-# include <boost/type_traits/same_traits.hpp>
+# include <boost/python/detail/type_traits.hpp>
# ifndef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE
# if defined(__GNUC__) \