From f9c8bf15bb7feca467f11c3c14c37d867148c08e Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Tue, 26 Nov 2002 02:47:17 +0000 Subject: [PATCH] Restore CWPro7.2 to health. Also improve source organization slightly [SVN r16416] --- include/boost/python/signature.hpp | 2 +- src/converter/arg_to_python_base.cpp | 19 ------------------- src/converter/registry.cpp | 20 +++++++++++++++++++- test/data_members.cpp | 9 +++++++-- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/include/boost/python/signature.hpp b/include/boost/python/signature.hpp index fd613940..5469fd5a 100644 --- a/include/boost/python/signature.hpp +++ b/include/boost/python/signature.hpp @@ -91,7 +91,7 @@ get_signature(RT(*)(BOOST_PP_ENUM_PARAMS_Z(1, N, T))) # undef N # define BOOST_PP_ITERATION_PARAMS_2 \ - (3, (0, BOOST_PYTHON_CV_COUNT - 1, )) + (3, (0, 3, )) # include BOOST_PP_ITERATE() #else diff --git a/src/converter/arg_to_python_base.cpp b/src/converter/arg_to_python_base.cpp index 1101f591..9849071e 100644 --- a/src/converter/arg_to_python_base.cpp +++ b/src/converter/arg_to_python_base.cpp @@ -12,25 +12,6 @@ namespace boost { namespace python { namespace converter { -PyObject* registration::to_python(void const volatile* source) const -{ - if (this->m_to_python == 0) - { - handle<> msg( - ::PyString_FromFormat( - "No to_python (by-value) converter found for C++ type: %s" - , this->target_type.name())); - - PyErr_SetObject(PyExc_TypeError, msg.get()); - - throw_error_already_set(); - } - - return source == 0 - ? incref(Py_None) - : this->m_to_python(const_cast(source)); -} - namespace detail { arg_to_python_base::arg_to_python_base( diff --git a/src/converter/registry.cpp b/src/converter/registry.cpp index 85ece278..b4891941 100644 --- a/src/converter/registry.cpp +++ b/src/converter/registry.cpp @@ -18,7 +18,7 @@ namespace boost { namespace python { namespace converter { -PyTypeObject* registration::get_class_object() const +BOOST_PYTHON_DECL PyTypeObject* registration::get_class_object() const { if (this->m_class_object == 0) { @@ -33,6 +33,24 @@ PyTypeObject* registration::get_class_object() const return this->m_class_object; } +BOOST_PYTHON_DECL PyObject* registration::to_python(void const volatile* source) const +{ + if (this->m_to_python == 0) + { + handle<> msg( + ::PyString_FromFormat( + "No to_python (by-value) converter found for C++ type: %s" + , this->target_type.name())); + + PyErr_SetObject(PyExc_TypeError, msg.get()); + + throw_error_already_set(); + } + + return source == 0 + ? incref(Py_None) + : this->m_to_python(const_cast(source)); +} namespace // { diff --git a/test/data_members.cpp b/test/data_members.cpp index 889ea9d1..13c46b0d 100644 --- a/test/data_members.cpp +++ b/test/data_members.cpp @@ -48,7 +48,7 @@ BOOST_PYTHON_MODULE(data_members_ext) .def_readonly("x", &X::x) .add_property("fair_value", get_fair_value) ; - + class_("Y", init()) .def("value", &Y::value) .def("set", &Y::set) @@ -57,7 +57,12 @@ BOOST_PYTHON_MODULE(data_members_ext) class_("Var", init()) .def_readonly("name", &Var::name) - .def_readonly("name2", &Var::name2) + .def_readonly("name2", +#if __MWERKS__ <= 0x2407 // Old MWerks mis-deduces the type here as `char* Var::*' + (char const* Var::*) +#endif + &Var::name2 + ) .def_readwrite("value", &Var::value) .def_readonly("y", &Var::y)