Adding & using PYBIND11_CLASSH_TYPE_CASTERS define.

parent 6dae732b
...@@ -374,5 +374,23 @@ struct classh_type_caster<std::unique_ptr<T const>> : smart_holder_type_caster_l ...@@ -374,5 +374,23 @@ struct classh_type_caster<std::unique_ptr<T const>> : smart_holder_type_caster_l
operator std::unique_ptr<T const>() { return this->loaded_as_unique_ptr(); } operator std::unique_ptr<T const>() { return this->loaded_as_unique_ptr(); }
}; };
#define PYBIND11_CLASSH_TYPE_CASTERS(T) \
namespace pybind11 { \
namespace detail { \
template <> \
class type_caster<T> : public classh_type_caster<T> {}; \
template <> \
class type_caster<std::shared_ptr<T>> : public classh_type_caster<std::shared_ptr<T>> {}; \
template <> \
class type_caster<std::shared_ptr<T const>> \
: public classh_type_caster<std::shared_ptr<T const>> {}; \
template <> \
class type_caster<std::unique_ptr<T>> : public classh_type_caster<std::unique_ptr<T>> {}; \
template <> \
class type_caster<std::unique_ptr<T const>> \
: public classh_type_caster<std::unique_ptr<T const>> {}; \
} \
}
} // namespace detail } // namespace detail
} // namespace pybind11 } // namespace pybind11
...@@ -49,26 +49,7 @@ std::unique_ptr<mpty> unique_ptr_roundtrip(std::unique_ptr<mpty> obj) { return o ...@@ -49,26 +49,7 @@ std::unique_ptr<mpty> unique_ptr_roundtrip(std::unique_ptr<mpty> obj) { return o
} // namespace classh_wip } // namespace classh_wip
} // namespace pybind11_tests } // namespace pybind11_tests
namespace pybind11 { PYBIND11_CLASSH_TYPE_CASTERS(pybind11_tests::classh_wip::mpty)
namespace detail {
using mpty = pybind11_tests::classh_wip::mpty;
template <>
class type_caster<mpty> : public classh_type_caster<mpty> {};
template <>
class type_caster<std::shared_ptr<mpty>> : public classh_type_caster<std::shared_ptr<mpty>> {};
template <>
class type_caster<std::shared_ptr<mpty const>>
: public classh_type_caster<std::shared_ptr<mpty const>> {};
template <>
class type_caster<std::unique_ptr<mpty>> : public classh_type_caster<std::unique_ptr<mpty>> {};
template <>
class type_caster<std::unique_ptr<mpty const>>
: public classh_type_caster<std::unique_ptr<mpty const>> {};
} // namespace detail
} // namespace pybind11
namespace pybind11_tests { namespace pybind11_tests {
namespace classh_wip { namespace classh_wip {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment