diff options
-rw-r--r-- | cppgenerator.cpp | 12 | ||||
-rw-r--r-- | shibokengenerator.cpp | 2 |
2 files changed, 8 insertions, 6 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp index 350795958..a9c9a8f65 100644 --- a/cppgenerator.cpp +++ b/cppgenerator.cpp @@ -330,16 +330,18 @@ void CppGenerator::generateClass(QTextStream &s, const AbstractMetaClass *metaCl if (shouldGenerateGetSetList(metaClass)) { foreach (const AbstractMetaField* metaField, metaClass->fields()) { writeGetterFunction(s, metaField); - writeSetterFunction(s, metaField); + if (!metaField->type()->isConstant()) + writeSetterFunction(s, metaField); s << endl; } s << "// Getters and Setters for " << metaClass->name() << endl; s << "static PyGetSetDef " << cpythonGettersSettersDefinitionName(metaClass) << "[] = {" << endl; foreach (const AbstractMetaField* metaField, metaClass->fields()) { + bool hasSetter = !metaField->type()->isConstant(); s << INDENT << "{const_cast<char*>(\"" << metaField->name() << "\"), "; - s << "(getter)" << cpythonGetterFunctionName(metaField); - s << ", (setter)" << cpythonSetterFunctionName(metaField); + s << cpythonGetterFunctionName(metaField); + s << ", " << (hasSetter ? cpythonSetterFunctionName(metaField) : "0"); s << "}," << endl; } s << INDENT << "{0} // Sentinel" << endl; @@ -2486,7 +2488,7 @@ void CppGenerator::writeTypeAsNumberDefinition(QTextStream& s, const AbstractMet void CppGenerator::writeGetterFunction(QTextStream& s, const AbstractMetaField* metaField) { - s << "static PyObject* " << cpythonGetterFunctionName(metaField) << "(SbkBaseWrapper* self)" << endl; + s << "static PyObject* " << cpythonGetterFunctionName(metaField) << "(PyObject* self, void*)" << endl; s << '{' << endl; s << INDENT << "return "; @@ -2504,7 +2506,7 @@ void CppGenerator::writeGetterFunction(QTextStream& s, const AbstractMetaField* void CppGenerator::writeSetterFunction(QTextStream& s, const AbstractMetaField* metaField) { - s << "static int " << cpythonSetterFunctionName(metaField) << "(SbkBaseWrapper* self, PyObject* value)" << endl; + s << "static int " << cpythonSetterFunctionName(metaField) << "(PyObject* self, PyObject* value, void*)" << endl; s << '{' << endl; s << INDENT << "if (value == 0) {" << endl; diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp index cfa5be6b2..7cd198ad8 100644 --- a/shibokengenerator.cpp +++ b/shibokengenerator.cpp @@ -445,7 +445,7 @@ QString ShibokenGenerator::cpythonWrapperCPtr(const AbstractMetaType* metaType, QString ShibokenGenerator::cpythonWrapperCPtr(const TypeEntry* type, QString argName) { if (type->isValue() || type->isObject()) - return baseConversionString(type->qualifiedCppName() + '*') + QString("toCpp((PyObject*)%1)").arg(argName); + return baseConversionString(type->qualifiedCppName() + '*') + "toCpp(" + argName + ')'; return QString(); } |