From e5cb9b6380040e40de1b3766ac90296d3828375a Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Sat, 14 Apr 2018 14:10:33 +0900 Subject: Mustache templates: Overload toJson() instead of operator QJsonObject()/QJsonValue() It slightly reduces the header interface and shortcuts the actual call chain (not that it had any performance implications, just easier reasoning). --- lib/jobs/{{base}}.cpp.mustache | 36 +++++++++++++++++++++--------------- lib/jobs/{{base}}.h.mustache | 4 ++-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/lib/jobs/{{base}}.cpp.mustache b/lib/jobs/{{base}}.cpp.mustache index 5e94dcf0..e44e6a2a 100644 --- a/lib/jobs/{{base}}.cpp.mustache +++ b/lib/jobs/{{base}}.cpp.mustache @@ -8,12 +8,15 @@ {{/operations}} using namespace QMatrixClient; {{#models.model}}{{^trivial?}} -{{qualifiedName}}::operator QJsonValue() const +namespace QMatrixClient { - QJsonObject o; - {{#vars}}o.insert("{{baseName}}", toJson({{nameCamelCase}})); - {{/vars}} - return o; + QJsonObject toJson(const {{qualifiedName}}& pod) + { + QJsonObject o; + {{#vars}}o.insert("{{baseName}}", toJson(pod.{{nameCamelCase}})); + {{/vars}} + return o; + } } {{qualifiedName}} FromJson<{{qualifiedName}}>::operator()(QJsonValue jv) @@ -28,15 +31,16 @@ using namespace QMatrixClient; {{/trivial?}}{{/models.model}}{{#operations}} static const auto basePath = QStringLiteral("{{basePathWithoutHost}}"); {{# operation}}{{#models.model}}{{^trivial?}} -{{qualifiedName}}::operator QJsonObject() const -{ - QJsonObject o; - {{#vars}}o.insert("{{baseName}}", toJson({{nameCamelCase}})); - {{/vars}} - return o; -} namespace QMatrixClient { + QJsonObject toJson(const {{qualifiedName}}& pod) + { + QJsonObject o; + {{#vars}}o.insert("{{baseName}}", toJson(pod.{{nameCamelCase}})); + {{/vars}} + return o; + } + template <> struct FromJson<{{qualifiedName}}> { {{qualifiedName}} operator()(QJsonValue jv) @@ -81,9 +85,11 @@ QUrl {{camelCaseOperationId}}Job::makeRequestUrl(QUrl baseUrl{{#allParams?}}, {{ { {{#headerParams?}}{{#headerParams}} setRequestHeader("{{baseName}}", {{paramName}}.toLatin1()); {{/headerParams}} -{{/headerParams?}}{{! -}}{{#bodyParams?}}{{! -}}{{#inlineBody}} setRequestData(Data({{nameCamelCase}}));{{/inlineBody}}{{! +{{/headerParams? +}}{{#bodyParams? +}}{{#inlineBody}} setRequestData(Data({{! + }}{{#consumesNonJson?}}{{nameCamelCase}}{{/consumesNonJson? + }}{{^consumesNonJson?}}toJson({{nameCamelCase}}){{/consumesNonJson?}}));{{/inlineBody }}{{^inlineBody}} QJsonObject _data;{{#bodyParams}} {{^required?}}{{#string?}} if (!{{paramName}}.isEmpty()) {{/string?}}{{/required?}} _data.insert("{{baseName}}", toJson({{paramName}}));{{/bodyParams}} diff --git a/lib/jobs/{{base}}.h.mustache b/lib/jobs/{{base}}.h.mustache index 12633604..8606e251 100644 --- a/lib/jobs/{{base}}.h.mustache +++ b/lib/jobs/{{base}}.h.mustache @@ -17,9 +17,10 @@ namespace QMatrixClient { {{#vars}}{{dataType.name}} {{nameCamelCase}}; {{/vars}} - operator QJsonObject() const; }; + QJsonObject toJson(const {{name}}& pod); + template <> struct FromJson<{{name}}> { {{name}} operator()(QJsonValue jv); @@ -38,7 +39,6 @@ namespace QMatrixClient { {{#vars}}{{dataType.name}} {{nameCamelCase}}; {{/vars}} - operator QJsonObject() const; }; {{/ trivial?}}{{/model}} // End of inner data structures -- cgit v1.2.3