Skip to content

Commit 1b2e626

Browse files
author
florianlink
committed
added generation of setter_/getter_ slots for public member variables
git-svn-id: http://svn.code.sf.net/p/pythonqt/code/trunk@151 ea8d5007-eb21-0410-b261-ccb3ea6e24a9
1 parent 212b0a6 commit 1b2e626

File tree

5 files changed

+32
-10
lines changed

5 files changed

+32
-10
lines changed

generator/abstractmetalang.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1264,7 +1264,7 @@ const AbstractMetaFunction *AbstractMetaField::setter() const
12641264
{
12651265
if (m_setter == 0) {
12661266
m_setter = createXetter(this,
1267-
"set" + upCaseFirst(name()),
1267+
name(),
12681268
AbstractMetaAttributes::SetterFunction);
12691269
AbstractMetaArgumentList arguments;
12701270
AbstractMetaArgument *argument = new AbstractMetaArgument;

generator/shellgenerator.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,12 @@ void ShellGenerator::writeFunctionSignature(QTextStream &s,
222222
function_name = meta_function->name();
223223
}
224224

225-
s << name_prefix << function_name;
225+
if (meta_function->attributes() & AbstractMetaAttributes::SetterFunction)
226+
s << "setter_";
227+
else if (meta_function->attributes() & AbstractMetaAttributes::GetterFunction)
228+
s << "getter_";
226229

227-
if (meta_function->attributes() & AbstractMetaAttributes::SetterFunction)
228-
s << "_setter";
229-
else if (meta_function->attributes() & AbstractMetaAttributes::GetterFunction)
230-
s << "_getter";
230+
s << name_prefix << function_name;
231231

232232
s << "(";
233233

generator/shellheadergenerator.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,23 @@ QString ShellHeaderGenerator::fileNameForClass(const AbstractMetaClass *meta_cla
5151
return QString("PythonQtWrapper_%1.h").arg(meta_class->name());
5252
}
5353

54+
55+
void ShellHeaderGenerator::writeFieldAccessors(QTextStream &s, const AbstractMetaField *field)
56+
{
57+
const AbstractMetaFunction *setter = field->setter();
58+
const AbstractMetaFunction *getter = field->getter();
59+
60+
if (!field->type()->isConstant()) {
61+
writeFunctionSignature(s, setter, 0, QString(),
62+
Option(ConvertReferenceToPtr | FirstArgIsWrappedObject| IncludeDefaultExpression | ShowStatic | UnderscoreSpaces));
63+
s << "{ theWrappedObject->" << field->name() << " = " << setter->arguments()[0]->argumentName() << "; }\n";
64+
}
65+
66+
writeFunctionSignature(s, getter, 0, QString(),
67+
Option(ConvertReferenceToPtr | FirstArgIsWrappedObject| IncludeDefaultExpression | OriginalName | ShowStatic | UnderscoreSpaces));
68+
s << "{ return theWrappedObject->" << field->name() << "; }\n";
69+
}
70+
5471
void ShellHeaderGenerator::write(QTextStream &s, const AbstractMetaClass *meta_class)
5572
{
5673
QString builtIn = ShellGenerator::isBuiltIn(meta_class->name())?"_builtin":"";
@@ -259,6 +276,13 @@ void ShellHeaderGenerator::write(QTextStream &s, const AbstractMetaClass *meta_c
259276
s << " QString toString(" << meta_class->qualifiedCppName() << "*);" << endl;
260277
}
261278

279+
// Field accessors
280+
foreach (const AbstractMetaField *field, meta_class->fields()) {
281+
if (field->isPublic()) {
282+
writeFieldAccessors(s, field);
283+
}
284+
}
285+
262286
// writeInjectedCode(s, meta_class);
263287

264288
// s << endl << " QScriptValue __qtscript_self;" << endl;

generator/shellheadergenerator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class ShellHeaderGenerator : public ShellGenerator
6262
void write(QTextStream &s, const AbstractMetaClass *meta_class);
6363
void writeInjectedCode(QTextStream &s, const AbstractMetaClass *meta_class);
6464

65+
void writeFieldAccessors(QTextStream &s, const AbstractMetaField *field);
66+
6567
SetupGenerator* setupGenerator;
6668
};
6769

generator/shellimplgenerator.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@ void ShellImplGenerator::write(QTextStream &s, const AbstractMetaClass *meta_cla
6969
QString builtIn = ShellGenerator::isBuiltIn(meta_class->name())?"_builtin":"";
7070
QString pro_file_name = meta_class->package().replace(".", "_") + builtIn + "/" + meta_class->package().replace(".", "_") + builtIn + ".pri";
7171
priGenerator->addSource(pro_file_name, fileNameForClass(meta_class));
72-
73-
foreach (AbstractMetaField* field, meta_class->fields()) {
74-
std::cout << "Not yet generated fields: " << meta_class->qualifiedCppName().toLatin1().data() << "::" << field->name().toLatin1().data() << std::endl;
75-
}
7672

7773
s << "#include \"PythonQtWrapper_" << meta_class->name() << ".h\"" << endl << endl;
7874

0 commit comments

Comments
 (0)