python 2.7 fix

This commit is contained in:
Wenzel Jakob 2015-09-05 02:09:17 +02:00
parent 570822102c
commit 5116b02e68
2 changed files with 6 additions and 3 deletions

View File

@ -100,7 +100,7 @@ const int Example2::value2 = 5;
void init_ex2(py::module &m) { void init_ex2(py::module &m) {
/* No constructor is explicitly defined below. An exception is raised when /* No constructor is explicitly defined below. An exception is raised when
trying to construct it directly from Python */ trying to construct it directly from Python */
py::class_<Example2>(m, "Example2") py::class_<Example2>(m, "Example2", "Example 2 documentation")
.def("get_dict", &Example2::get_dict, "Return a Python dictionary") .def("get_dict", &Example2::get_dict, "Return a Python dictionary")
.def("get_dict_2", &Example2::get_dict_2, "Return a C++ dictionary") .def("get_dict_2", &Example2::get_dict_2, "Return a C++ dictionary")
.def("get_list", &Example2::get_list, "Return a Python list") .def("get_list", &Example2::get_list, "Return a Python list")

View File

@ -510,6 +510,11 @@ public:
type->ht_type.tp_as_sequence = &type->as_sequence; type->ht_type.tp_as_sequence = &type->as_sequence;
type->ht_type.tp_as_mapping = &type->as_mapping; type->ht_type.tp_as_mapping = &type->as_mapping;
type->ht_type.tp_base = (PyTypeObject *) parent; type->ht_type.tp_base = (PyTypeObject *) parent;
if (doc) {
size_t size = strlen(doc)+1;
type->ht_type.tp_doc = (char *)PyObject_MALLOC(size);
memcpy((void *) type->ht_type.tp_doc, doc, size);
}
Py_XINCREF(parent); Py_XINCREF(parent);
if (PyType_Ready(&type->ht_type) < 0) if (PyType_Ready(&type->ht_type) < 0)
@ -525,8 +530,6 @@ public:
type_info.type_size = type_size; type_info.type_size = type_size;
type_info.init_holder = init_holder; type_info.init_holder = init_holder;
attr("__pybind__") = capsule(&type_info); attr("__pybind__") = capsule(&type_info);
if (doc)
attr("__doc__") = pybind::str(doc);
scope.attr(name) = *this; scope.attr(name) = *this;
} }