Moc: use QStringBuilder more

Adding strings in a single expression gets mediated
efficiently by QStringBuilder, where using += repeatedly
forces premature consolidation.

Change-Id: I6c1abb9c9801a016ce6c151cffdf8c7ac9502f4e
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
bb10
Anton Kudryavtsev 2016-04-19 10:04:12 +03:00
parent 64df35c02d
commit bafe205d6a
3 changed files with 44 additions and 58 deletions

View File

@ -1466,9 +1466,7 @@ void Generator::generateSignal(FunctionDef *def,int index)
const char *constQualifier = "";
if (def->isConst) {
thisPtr = "const_cast< ";
thisPtr += cdef->qualified;
thisPtr += " *>(this)";
thisPtr = "const_cast< " + cdef->qualified + " *>(this)";
constQualifier = "const";
}

View File

@ -453,9 +453,8 @@ bool Moc::parseFunction(FunctionDef *def, bool inMacro)
}
if (scopedFunctionName) {
QByteArray msg("Function declaration ");
msg += def->name;
msg += " contains extra qualification. Ignoring as signal or slot.";
const QByteArray msg = "Function declaration " + def->name
+ " contains extra qualification. Ignoring as signal or slot.";
warning(msg.constData());
return false;
}
@ -526,9 +525,8 @@ bool Moc::parseMaybeFunction(const ClassDef *cdef, FunctionDef *def)
def->isConst = test(CONST);
if (scopedFunctionName
&& (def->isSignal || def->isSlot || def->isInvokable)) {
QByteArray msg("parsemaybe: Function declaration ");
msg += def->name;
msg += " contains extra qualification. Ignoring as signal or slot.";
const QByteArray msg = "parsemaybe: Function declaration " + def->name
+ " contains extra qualification. Ignoring as signal or slot.";
warning(msg.constData());
return false;
}
@ -1132,25 +1130,19 @@ void Moc::createPropertyDef(PropertyDef &propDef)
}
}
if (propDef.read.isNull() && propDef.member.isNull()) {
QByteArray msg;
msg += "Property declaration ";
msg += propDef.name;
msg += " has no READ accessor function or associated MEMBER variable. The property will be invalid.";
const QByteArray msg = "Property declaration " + propDef.name
+ " has no READ accessor function or associated MEMBER variable. The property will be invalid.";
warning(msg.constData());
}
if (propDef.constant && !propDef.write.isNull()) {
QByteArray msg;
msg += "Property declaration ";
msg += propDef.name;
msg += " is both WRITEable and CONSTANT. CONSTANT will be ignored.";
const QByteArray msg = "Property declaration " + propDef.name
+ " is both WRITEable and CONSTANT. CONSTANT will be ignored.";
propDef.constant = false;
warning(msg.constData());
}
if (propDef.constant && !propDef.notify.isNull()) {
QByteArray msg;
msg += "Property declaration ";
msg += propDef.name;
msg += " is both NOTIFYable and CONSTANT. CONSTANT will be ignored.";
const QByteArray msg = "Property declaration " + propDef.name
+ " is both NOTIFYable and CONSTANT. CONSTANT will be ignored.";
propDef.constant = false;
warning(msg.constData());
}
@ -1196,10 +1188,8 @@ void Moc::parsePluginData(ClassDef *def)
}
}
if (!fi.exists()) {
QByteArray msg;
msg += "Plugin Metadata file ";
msg += lexem();
msg += " does not exist. Declaration will be ignored";
const QByteArray msg = "Plugin Metadata file " + lexem()
+ " does not exist. Declaration will be ignored";
error(msg.constData());
return;
}
@ -1212,10 +1202,8 @@ void Moc::parsePluginData(ClassDef *def)
if (!metaData.isEmpty()) {
def->pluginData.metaData = QJsonDocument::fromJson(metaData);
if (!def->pluginData.metaData.isObject()) {
QByteArray msg;
msg += "Plugin Metadata file ";
msg += lexem();
msg += " does not contain a valid JSON object. Declaration will be ignored";
const QByteArray msg = "Plugin Metadata file " + lexem()
+ " does not contain a valid JSON object. Declaration will be ignored";
warning(msg.constData());
def->pluginData.iid = QByteArray();
return;
@ -1512,12 +1500,12 @@ void Moc::checkSuperClasses(ClassDef *def)
if (!knownQObjectClasses.contains(firstSuperclass)) {
// enable once we /require/ include paths
#if 0
QByteArray msg;
msg += "Class ";
msg += def->className;
msg += " contains the Q_OBJECT macro and inherits from ";
msg += def->superclassList.value(0);
msg += " but that is not a known QObject subclass. You may get compilation errors.";
const QByteArray msg
= "Class "
+ def->className
+ " contains the Q_OBJECT macro and inherits from "
+ def->superclassList.value(0)
+ " but that is not a known QObject subclass. You may get compilation errors.";
warning(msg.constData());
#endif
return;
@ -1525,14 +1513,14 @@ void Moc::checkSuperClasses(ClassDef *def)
for (int i = 1; i < def->superclassList.count(); ++i) {
const QByteArray superClass = def->superclassList.at(i).first;
if (knownQObjectClasses.contains(superClass)) {
QByteArray msg;
msg += "Class ";
msg += def->classname;
msg += " inherits from two QObject subclasses ";
msg += firstSuperclass;
msg += " and ";
msg += superClass;
msg += ". This is not supported!";
const QByteArray msg
= "Class "
+ def->classname
+ " inherits from two QObject subclasses "
+ firstSuperclass
+ " and "
+ superClass
+ ". This is not supported!";
warning(msg.constData());
}
@ -1545,14 +1533,14 @@ void Moc::checkSuperClasses(ClassDef *def)
}
if (!registeredInterface) {
QByteArray msg;
msg += "Class ";
msg += def->classname;
msg += " implements the interface ";
msg += superClass;
msg += " but does not list it in Q_INTERFACES. qobject_cast to ";
msg += superClass;
msg += " will not work!";
const QByteArray msg
= "Class "
+ def->classname
+ " implements the interface "
+ superClass
+ " but does not list it in Q_INTERFACES. qobject_cast to "
+ superClass
+ " will not work!";
warning(msg.constData());
}
}

View File

@ -207,10 +207,11 @@ Symbols Preprocessor::tokenize(const QByteArray& input, int lineNum, Preprocesso
&& !symbols.isEmpty()
&& symbols.constLast().token == STRING_LITERAL) {
QByteArray newString = symbols.constLast().unquotedLexem();
newString += input.mid(lexem - begin + 1, data - lexem - 2);
newString.prepend('\"');
newString.append('\"');
const QByteArray newString
= '\"'
+ symbols.constLast().unquotedLexem()
+ input.mid(lexem - begin + 1, data - lexem - 2)
+ '\"';
symbols.last() = Symbol(symbols.constLast().lineNum,
STRING_LITERAL,
newString);
@ -1034,9 +1035,8 @@ void Preprocessor::preprocess(const QByteArray &filename, Symbols &preprocessed)
const int slashPos = include.indexOf('/');
if (slashPos == -1)
continue;
QByteArray frameworkCandidate = include.left(slashPos);
frameworkCandidate.append(".framework/Headers/");
fi.setFile(QString::fromLocal8Bit(QByteArray(p.path + '/' + frameworkCandidate).constData()), QString::fromLocal8Bit(include.mid(slashPos + 1).constData()));
fi.setFile(QString::fromLocal8Bit(p.path + '/' + include.left(slashPos) + ".framework/Headers/"),
QString::fromLocal8Bit(include.mid(slashPos + 1).constData()));
} else {
fi.setFile(QString::fromLocal8Bit(p.path.constData()), QString::fromLocal8Bit(include.constData()));
}