[tools/generate] Generate implementation of client side requests

Like in the factored method case, just for generic requests.
This commit is contained in:
Martin Gräßlin 2016-11-08 10:58:45 +01:00
parent 8cbf16b737
commit ccdcb43680

View file

@ -1262,7 +1262,12 @@ void Generator::generateClientClassRequests(const Interface &interface)
void Generator::generateClientCppRequests(const Interface &interface) void Generator::generateClientCppRequests(const Interface &interface)
{ {
const auto requests = interface.requests(); const auto requests = interface.requests();
const QString templateString = QStringLiteral("void %1::%2(%3)\n{\n}\n\n"); const QString templateString = QStringLiteral(
"void %1::%2(%3)\n"
"{\n"
" Q_ASSERT(isValid());\n"
" %4_%5(d->%6%7);\n"
"}\n\n");
const QString factoryTemplateString = QStringLiteral( const QString factoryTemplateString = QStringLiteral(
"%2 *%1::%3(%4)\n" "%2 *%1::%3(%4)\n"
"{\n" "{\n"
@ -1281,7 +1286,7 @@ void Generator::generateClientCppRequests(const Interface &interface)
continue; continue;
} }
QString arguments; QString arguments;
QString factoredArguments; QString requestArguments;
bool first = true; bool first = true;
QString factored; QString factored;
for (const auto &a: r.arguments()) { for (const auto &a: r.arguments()) {
@ -1296,18 +1301,20 @@ void Generator::generateClientCppRequests(const Interface &interface)
} }
if (a.type() == Argument::Type::Object) { if (a.type() == Argument::Type::Object) {
arguments.append(QStringLiteral("%1 *%2").arg(a.typeAsQt()).arg(toCamelCase(a.name()))); arguments.append(QStringLiteral("%1 *%2").arg(a.typeAsQt()).arg(toCamelCase(a.name())));
if (!factored.isEmpty()) { requestArguments.append(QStringLiteral(", *%1").arg(toCamelCase(a.name())));
factoredArguments.append(QStringLiteral(", *%1").arg(toCamelCase(a.name())));
}
} else { } else {
arguments.append(QStringLiteral("%1 %2").arg(a.typeAsQt()).arg(toCamelCase(a.name()))); arguments.append(QStringLiteral("%1 %2").arg(a.typeAsQt()).arg(toCamelCase(a.name())));
if (!factored.isEmpty()) { requestArguments.append(QStringLiteral(", %1").arg(toCamelCase(a.name())));
factoredArguments.append(QStringLiteral(", %1").arg(toCamelCase(a.name())));
}
} }
} }
if (factored.isEmpty()) { if (factored.isEmpty()) {
*m_stream.localData() << templateString.arg(interface.kwaylandClientName()).arg(toCamelCase(r.name())).arg(arguments); *m_stream.localData() << templateString.arg(interface.kwaylandClientName())
.arg(toCamelCase(r.name()))
.arg(arguments)
.arg(interface.name())
.arg(r.name())
.arg(interface.kwaylandClientName().toLower())
.arg(requestArguments);
} else { } else {
if (!first) { if (!first) {
arguments.append(QStringLiteral(", ")); arguments.append(QStringLiteral(", "));
@ -1320,7 +1327,7 @@ void Generator::generateClientCppRequests(const Interface &interface)
.arg(interface.name()) .arg(interface.name())
.arg(r.name()) .arg(r.name())
.arg(interface.kwaylandClientName().toLower()) .arg(interface.kwaylandClientName().toLower())
.arg(factoredArguments); .arg(requestArguments);
} }
} }
} }