diff --git a/dtool/src/interrogate/interfaceMakerPythonNative.cxx b/dtool/src/interrogate/interfaceMakerPythonNative.cxx index e0286e2d6a..65114603e4 100755 --- a/dtool/src/interrogate/interfaceMakerPythonNative.cxx +++ b/dtool/src/interrogate/interfaceMakerPythonNative.cxx @@ -2871,32 +2871,37 @@ void InterfaceMakerPythonNative::pack_return_value(ostream &out, int indent_leve << return_expr << ".data(), (int)" << return_expr << ".length());\n"; } + } else if (TypeManager::is_bool(type)) { + indent(out, indent_level) + << "return PyBool_FromLong(" << return_expr << ");\n"; + } else if (TypeManager::is_unsigned_longlong(type)) { indent(out, indent_level) << "return PyLong_FromUnsignedLongLong(" << return_expr << ");\n"; } else if (TypeManager::is_longlong(type)) { - indent(out, indent_level) - << "return PyLong_FromLongLong(" << return_expr << ");\n"; + indent(out, indent_level) + << "return PyLong_FromLongLong(" << return_expr << ");\n"; - } else if(TypeManager::is_unsigned_integer(type)){ - indent(out, indent_level) - << "return PyLongOrInt_FromUnsignedLong(" << return_expr << ");\n"; - - }else if (TypeManager::is_integer(type)) { - indent(out, indent_level) - << "return PyInt_FromLong(" << return_expr << ");\n"; + } else if(TypeManager::is_unsigned_integer(type)){ + indent(out, indent_level) + << "return PyLongOrInt_FromUnsignedLong(" << return_expr << ");\n"; + + } else if (TypeManager::is_integer(type)) { + indent(out, indent_level) + << "return PyInt_FromLong(" << return_expr << ");\n"; + } else if (TypeManager::is_float(type)) { - indent(out, indent_level) - << "return PyFloat_FromDouble(" << return_expr << ");\n"; - + indent(out, indent_level) + << "return PyFloat_FromDouble(" << return_expr << ");\n"; + } else if (TypeManager::is_char_pointer(type)) { - indent(out, indent_level)<<"if("<< return_expr<< " == NULL)\n"; - indent(out, indent_level)<<"{\n"; - indent(out, indent_level)<<" Py_INCREF(Py_None);\n"; - indent(out, indent_level)<<" return Py_None;\n"; - indent(out, indent_level)<<"}\n"; - indent(out, indent_level) + indent(out, indent_level)<<"if("<< return_expr<< " == NULL)\n"; + indent(out, indent_level)<<"{\n"; + indent(out, indent_level)<<" Py_INCREF(Py_None);\n"; + indent(out, indent_level)<<" return Py_None;\n"; + indent(out, indent_level)<<"}\n"; + indent(out, indent_level) << "return PyString_FromString(" << return_expr << ");\n"; } diff --git a/dtool/src/interrogate/interfaceMakerPythonObj.cxx b/dtool/src/interrogate/interfaceMakerPythonObj.cxx index 8d6a6d6644..5ce5bb455e 100644 --- a/dtool/src/interrogate/interfaceMakerPythonObj.cxx +++ b/dtool/src/interrogate/interfaceMakerPythonObj.cxx @@ -562,6 +562,10 @@ pack_return_value(ostream &out, int indent_level, << return_expr << ".data(), " << return_expr << ".length());\n"; } + } else if (TypeManager::is_bool(type)) { + indent(out, indent_level) + << "return PyBool_FromLong(" << return_expr << ");\n"; + } else if (TypeManager::is_unsigned_longlong(type)) { indent(out, indent_level) << "return PyLong_FromUnsignedLongLong(" << return_expr << ");\n"; diff --git a/dtool/src/interrogate/interfaceMakerPythonSimple.cxx b/dtool/src/interrogate/interfaceMakerPythonSimple.cxx index 585e2e4f04..2a92c1f347 100644 --- a/dtool/src/interrogate/interfaceMakerPythonSimple.cxx +++ b/dtool/src/interrogate/interfaceMakerPythonSimple.cxx @@ -466,6 +466,10 @@ pack_return_value(ostream &out, int indent_level, << return_expr << ".data(), " << return_expr << ".length());\n"; } + } else if (TypeManager::is_bool(type)) { + indent(out, indent_level) + << "return PyBool_FromLong(" << return_expr << ");\n"; + } else if (TypeManager::is_unsigned_longlong(type)) { indent(out, indent_level)