Skip to content

Commit e2a1eee

Browse files
author
florianlink
committed
improved signature normalization
git-svn-id: http://svn.code.sf.net/p/pythonqt/code/trunk@376 ea8d5007-eb21-0410-b261-ccb3ea6e24a9
1 parent d577ccf commit e2a1eee

File tree

4 files changed

+27
-11
lines changed

4 files changed

+27
-11
lines changed

generator/abstractmetalang.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ QStringList AbstractMetaFunction::introspectionCompatibleSignatures(const QStrin
329329
{
330330
AbstractMetaArgumentList arguments = this->arguments();
331331
if (arguments.size() == resolvedArguments.size()) {
332-
return (QStringList() << QMetaObject::normalizedSignature((name() + "(" + resolvedArguments.join(",") + ")").toUtf8().constData()));
332+
return (QStringList() << TypeSystem::normalizedSignature((name() + "(" + resolvedArguments.join(",") + ")").toUtf8().constData()));
333333
} else {
334334
QStringList returned;
335335

@@ -656,7 +656,7 @@ QString AbstractMetaFunction::minimalSignature() const
656656
if (isConstant())
657657
minimalSignature += "const";
658658

659-
minimalSignature = QMetaObject::normalizedSignature(minimalSignature.toLocal8Bit().constData());
659+
minimalSignature = TypeSystem::normalizedSignature(minimalSignature.toLocal8Bit().constData());
660660
m_cached_minimal_signature = minimalSignature;
661661

662662
return minimalSignature;
@@ -1497,10 +1497,10 @@ void AbstractMetaClass::addInterface(AbstractMetaClass *interface)
14971497
*cpy += AbstractMetaAttributes::InterfaceFunction;
14981498

14991499
// Copy the modifications in interface into the implementing classes.
1500-
FunctionModificationList mods = function->modifications(interface);
1501-
foreach (const FunctionModification &mod, mods) {
1502-
m_type_entry->addFunctionModification(mod);
1503-
}
1500+
//FunctionModificationList mods = function->modifications(interface);
1501+
//foreach (const FunctionModification &mod, mods) {
1502+
// m_type_entry->addFunctionModification(mod);
1503+
//}
15041504

15051505
// It should be mostly safe to assume that when we implement an interface
15061506
// we don't "pass on" pure virtual functions to our sublcasses...

generator/shellheadergenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,9 @@ void ShellHeaderGenerator::write(QTextStream &s, const AbstractMetaClass *meta_c
150150
s << ", ";
151151
s << args.at(i)->argumentName();
152152
}
153-
s << "),_wrapper(NULL) { ";
153+
s << "),_wrapper(NULL) {";
154154
writeInjectedCode(s, meta_class, TypeSystem::PyInheritShellConstructorCode, true);
155-
s << " };" << endl;
155+
s << "};" << endl;
156156
}
157157
s << endl;
158158
s << " ~" << shellClassName(meta_class) << "();" << endl;

generator/typesystem.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,7 @@ bool Handler::startElement(const QString &, const QString &n,
11311131
}
11321132
QString signature = attributes["signature"];
11331133

1134-
signature = QMetaObject::normalizedSignature(signature.toLocal8Bit().constData());
1134+
signature = TypeSystem::normalizedSignature(signature.toLocal8Bit().constData());
11351135
if (signature.isEmpty()) {
11361136
m_error = "No signature for modified function";
11371137
return false;
@@ -1901,7 +1901,7 @@ QString FunctionModification::toString() const
19011901
static void removeFunction(ComplexTypeEntry *e, const char *signature)
19021902
{
19031903
FunctionModification mod;
1904-
mod.signature = QMetaObject::normalizedSignature(signature);
1904+
mod.signature = TypeSystem::normalizedSignature(signature);
19051905
mod.removal = TypeSystem::All;
19061906

19071907
e->addFunctionModification(mod);
@@ -1922,7 +1922,7 @@ static void injectCode(ComplexTypeEntry *e,
19221922
snip.argumentMap = args;
19231923

19241924
FunctionModification mod;
1925-
mod.signature = QMetaObject::normalizedSignature(signature);
1925+
mod.signature = TypeSystem::normalizedSignature(signature);
19261926
mod.snips << snip;
19271927
mod.modifiers = Modification::CodeInjection;
19281928
e->addFunctionModification(mod);
@@ -2018,3 +2018,16 @@ static void addRemoveFunctionToTemplates(TypeDatabase *db)
20182018
}
20192019

20202020
}
2021+
2022+
QByteArray TypeSystem::normalizedSignature(const char* signature)
2023+
{
2024+
QByteArray result = QMetaObject::normalizedSignature(signature);
2025+
result.replace("unsigned ", "u");
2026+
result.replace("qreal", "double");
2027+
result.replace("long long", "longlong");
2028+
result.replace("qlonglong", "longlong");
2029+
result.replace("qulonglong", "ulonglong");
2030+
result.replace("qint64", "longlong");
2031+
result.replace("quint64", "ulonglong");
2032+
return result;
2033+
}

generator/typesystem.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ namespace TypeSystem {
130130
CppOwnership,
131131
TargetLangThisOwnership
132132
};
133+
134+
//! A better normalized signature, which takes care of PODs with the same name
135+
QByteArray normalizedSignature(const char* signature);
133136
};
134137

135138
struct ReferenceCount

0 commit comments

Comments
 (0)