aboutsummaryrefslogtreecommitdiffstats
path: root/typesystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'typesystem.cpp')
-rw-r--r--typesystem.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/typesystem.cpp b/typesystem.cpp
index 74bb6c384..1a5fbffd7 100644
--- a/typesystem.cpp
+++ b/typesystem.cpp
@@ -1293,7 +1293,7 @@ bool Handler::startElement(const QString &, const QString &n,
}
QString signature = attributes["signature"];
- signature = QMetaObject::normalizedSignature(signature.toLocal8Bit().constData());
+ signature = TypeDatabase::normalizedSignature(signature.toLocal8Bit().constData());
if (signature.isEmpty()) {
m_error = "No signature for the added function";
return false;
@@ -1331,7 +1331,7 @@ bool Handler::startElement(const QString &, const QString &n,
}
QString signature = attributes["signature"];
- signature = QMetaObject::normalizedSignature(signature.toLocal8Bit().constData());
+ signature = TypeDatabase::normalizedSignature(signature.toLocal8Bit().constData());
if (signature.isEmpty()) {
m_error = "No signature for modified function";
return false;
@@ -1670,6 +1670,24 @@ TypeDatabase *TypeDatabase::instance(bool newInstance)
return db;
}
+QString TypeDatabase::normalizedSignature(const char* signature)
+{
+ QString normalized = QMetaObject::normalizedSignature(signature);
+
+ if (!instance() || !QString(signature).contains("unsigned"))
+ return normalized;
+
+ QStringList types;
+ types << "char" << "short" << "int" << "long";
+ foreach (const QString& type, types) {
+ if (instance()->findType(QString("u%1").arg(type)))
+ continue;
+ normalized.replace(QRegExp(QString("\\bu%1\\b").arg(type)), QString("unsigned %1").arg(type));
+ }
+
+ return normalized;
+}
+
TypeDatabase::TypeDatabase() : m_suppressWarnings(true)
{
StringTypeEntry* e = new StringTypeEntry("QXmlStreamStringRef");