diff options
author | 2013-08-27 21:56:44 +0100 | |
---|---|---|
committer | 2013-08-27 21:56:44 +0100 | |
commit | 64f0d9760ea6c390c8fc7b5366dc8cb2a31f38be (patch) | |
tree | f6ea9b9749987348ee528325cf3d693565d89d9e | |
parent | 2d3a4c3ba2c414fa7d92713465c46d54a63f22d3 (diff) | |
download | paludis-64f0d9760ea6c390c8fc7b5366dc8cb2a31f38be.tar.gz paludis-64f0d9760ea6c390c8fc7b5366dc8cb2a31f38be.tar.xz |
Another attempt at new Boost compatibility
Instead of weird hacks with const_cast that aren't compatible with
Boost's get_pointer implementation for shared_ptr, use non-const
pointers as the representation and register conversions, like most of
the classes did already.
-rw-r--r-- | python/choices.cc | 9 | ||||
-rw-r--r-- | python/dep_spec.cc | 3 | ||||
-rw-r--r-- | python/paludis_python.hh | 14 |
3 files changed, 8 insertions, 18 deletions
diff --git a/python/choices.cc b/python/choices.cc index 18287effe..b4658da12 100644 --- a/python/choices.cc +++ b/python/choices.cc @@ -30,7 +30,8 @@ namespace bp = boost::python; void expose_choices() { - bp::class_<Choices, std::shared_ptr<const Choices>, boost::noncopyable> choices( + register_shared_ptrs_to_python<Choices>(rsp_const); + bp::class_<Choices, std::shared_ptr<Choices>, boost::noncopyable> choices( "Choices", "A collection of configurable values for a PackageID", bp::init<>("__init__()") @@ -50,7 +51,8 @@ void expose_choices() ) ; - bp::class_<Choice, std::shared_ptr<const Choice>, boost::noncopyable> choice( + register_shared_ptrs_to_python<Choice>(rsp_const); + bp::class_<Choice, std::shared_ptr<Choice>, boost::noncopyable> choice( "Choice", "An individual choice in a Choices collection.", bp::no_init @@ -90,7 +92,8 @@ void expose_choices() ) ; - bp::class_<ChoiceValue, std::shared_ptr<const ChoiceValue>, boost::noncopyable> choice_value( + register_shared_ptrs_to_python<ChoiceValue>(rsp_const); + bp::class_<ChoiceValue, std::shared_ptr<ChoiceValue>, boost::noncopyable> choice_value( "ChoiceValue", "An individual value in a ChoiceValue", bp::no_init diff --git a/python/dep_spec.cc b/python/dep_spec.cc index 20b59bb81..e01880a59 100644 --- a/python/dep_spec.cc +++ b/python/dep_spec.cc @@ -1219,12 +1219,13 @@ void expose_dep_spec() "Create a PackageDepSpec from user input." ); + register_shared_ptrs_to_python<PythonPackageDepSpec>(rsp_const); bp::implicitly_convertible<PythonPackageDepSpec, PackageDepSpec>(); bp::implicitly_convertible<PythonPackageDepSpec, std::shared_ptr<PackageDepSpec> >(); bp::implicitly_convertible<std::shared_ptr<PackageDepSpec>, std::shared_ptr<const PackageDepSpec> >(); RegisterDepSpecToPython<PackageDepSpec, PythonPackageDepSpec>(); - bp::class_<PythonPackageDepSpec, std::shared_ptr<const PythonPackageDepSpec>, bp::bases<PythonStringDepSpec> > + bp::class_<PythonPackageDepSpec, std::shared_ptr<PythonPackageDepSpec>, bp::bases<PythonStringDepSpec> > ( "PackageDepSpec", "A PackageDepSpec represents a package name (for example, 'app-editors/vim')," diff --git a/python/paludis_python.hh b/python/paludis_python.hh index 9c6678bdf..0691fee57 100644 --- a/python/paludis_python.hh +++ b/python/paludis_python.hh @@ -38,13 +38,6 @@ namespace paludis { return p.get(); } - - // Make Boost.Python work with std::shared_ptr<const> - template <typename T_> - inline T_ * get_pointer(std::shared_ptr<const T_> const & p) - { - return const_cast<T_*>(p.get()); - } } #endif @@ -58,13 +51,6 @@ namespace boost { typedef T_ type; }; - - // Make Boost.Python work with std::shared_ptr<const> - template <typename T_> - struct pointee<std::shared_ptr<const T_> > - { - typedef T_ type; - }; } } |