Skip to content

Commit 1462933

Browse files
authored
[cpp-qt-client] Optimize generated code (#23089)
* [cpp-qt-client]Optimize generated code - Use const references at function parameters - Do not perform useless initialization of QStrings - Use qDeleteAll * - Do not change signal arguments to const in public API as it breaks API - Fix whitespace typo * Regenerate tests
1 parent dc41550 commit 1462933

55 files changed

Lines changed: 191 additions & 194 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.cpp.mustache

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
#include <QUrl>
88
#include <QUuid>
99
#include <QtGlobal>
10+
#include <QtAlgorithms>
11+
12+
#include <utility>
1013
{{#contentCompression}}
1114
#include <zlib.h>{{/contentCompression}}
1215

@@ -20,7 +23,7 @@ namespace {{this}} {
2023
initialize();
2124
}
2225

23-
{{prefix}}HttpRequestInput::{{prefix}}HttpRequestInput(QString v_url_str, QString v_http_method) {
26+
{{prefix}}HttpRequestInput::{{prefix}}HttpRequestInput(const QString &v_url_str, const QString &v_http_method) {
2427
initialize();
2528
url_str = v_url_str;
2629
http_method = v_http_method;
@@ -32,11 +35,11 @@ void {{prefix}}HttpRequestInput::initialize() {
3235
http_method = "GET";
3336
}
3437

35-
void {{prefix}}HttpRequestInput::add_var(QString key, QString value) {
38+
void {{prefix}}HttpRequestInput::add_var(const QString &key, const QString &value) {
3639
vars[key] = value;
3740
}
3841

39-
void {{prefix}}HttpRequestInput::add_file(QString variable_name, QString local_filename, QString request_filename, QString mime_type) {
42+
void {{prefix}}HttpRequestInput::add_file(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime_type) {
4043
{{prefix}}HttpFileElement file;
4144
file.variable_name = variable_name;
4245
file.local_filename = local_filename;
@@ -58,11 +61,7 @@ void {{prefix}}HttpRequestInput::add_file(QString variable_name, QString local_f
5861
{{prefix}}HttpRequestWorker::~{{prefix}}HttpRequestWorker() {
5962
QObject::disconnect(&timeOutTimer, &QTimer::timeout, nullptr, nullptr);
6063
timeOutTimer.stop();
61-
for (const auto &item : multiPartFields) {
62-
if (item != nullptr) {
63-
delete item;
64-
}
65-
}
64+
qDeleteAll(multiPartFields);
6665
}
6766

6867
QMap<QString, QString> {{prefix}}HttpRequestWorker::getResponseHeaders() const {
@@ -116,10 +115,10 @@ int {{prefix}}HttpRequestWorker::getHttpResponseCode() const{
116115
return httpResponseCode;
117116
}
118117

119-
QString {{prefix}}HttpRequestWorker::http_attribute_encode(QString attribute_name, QString input) {
118+
QString {{prefix}}HttpRequestWorker::http_attribute_encode(const QString &attribute_name, const QString &input) {
120119
// result structure follows RFC 5987
121120
bool need_utf_encoding = false;
122-
QString result = "";
121+
QString result;
123122
QByteArray input_c = input.toLocal8Bit();
124123
char c;
125124
for (int i = 0; i < input_c.length(); i++) {
@@ -143,7 +142,7 @@ QString {{prefix}}HttpRequestWorker::http_attribute_encode(QString attribute_nam
143142
return QString("%1=\"%2\"").arg(attribute_name, result);
144143
}
145144

146-
QString result_utf8 = "";
145+
QString result_utf8;
147146
for (int i = 0; i < input_c.length(); i++) {
148147
c = input_c.at(i);
149148
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
@@ -178,15 +177,15 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) {
178177

179178
// prepare request content
180179

181-
QString boundary = "";
180+
QString boundary;
182181

183182
if (input->var_layout == ADDRESS || input->var_layout == URL_ENCODED) {
184183
// variable layout is ADDRESS or URL_ENCODED
185184
186185
if (input->vars.count() > 0) {
187186
bool first = true;
188187
isFormData = true;
189-
for (QString key : input->vars.keys()) {
188+
for (const QString &key : input->vars.keys()) {
190189
if (!first) {
191190
request_content.append("&");
192191
}
@@ -208,11 +207,11 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) {
208207
boundary = QString("__-----------------------%1%2")
209208
.arg(QDateTime::currentSecsSinceEpoch())
210209
.arg(randomGenerator.generate());
211-
QString boundary_delimiter = "--";
212-
QString new_line = "\r\n";
210+
const QString boundary_delimiter = "--";
211+
const QString new_line = "\r\n";
213212
214213
// add variables
215-
for (QString key : input->vars.keys()) {
214+
for (const QString &key : input->vars.keys()) {
216215
// add boundary
217216
request_content.append(boundary_delimiter.toUtf8());
218217
request_content.append(boundary.toUtf8());
@@ -314,7 +313,7 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) {
314313
request.setSslConfiguration(*{{prefix}}HttpRequestWorker::sslDefaultConfiguration);
315314
}
316315
request.setRawHeader("User-Agent", "{{httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{apiVersion}}/cpp-qt{{/httpUserAgent}}");
317-
for (QString key : input->headers.keys()) { request.setRawHeader(key.toStdString().c_str(), input->headers.value(key).toStdString().c_str()); }
316+
for (const QString &key : input->headers.keys()) { request.setRawHeader(key.toStdString().c_str(), input->headers.value(key).toStdString().c_str()); }
318317

319318
if (request_content.size() > 0 && !isFormData && (input->var_layout != MULTIPART)) {
320319
if (!input->headers.contains("Content-Type")) {
@@ -404,7 +403,7 @@ void {{prefix}}HttpRequestWorker::process_response(QNetworkReply *reply) {
404403
QString contentTypeHdr;
405404
QString contentEncodingHdr;
406405
407-
for(auto hdr: getResponseHeaders().keys()){
406+
for(const auto &hdr: getResponseHeaders().keys()){
408407
if(hdr.compare(QString("Content-Disposition"), Qt::CaseInsensitive) == 0){
409408
contentDispositionHdr = getResponseHeaders().value(hdr);
410409
}
@@ -422,7 +421,7 @@ void {{prefix}}HttpRequestWorker::process_response(QNetworkReply *reply) {
422421
!contentTypeHdr.isEmpty() ? contentTypeHdr.split(QString(";"), Qt::SkipEmptyParts).first() : QString();
423422
if ((contentDisposition.count() > 0) && (contentDisposition.first() == QString("attachment"))) {
424423
QString filename = QUuid::createUuid().toString();
425-
for (const auto &file : contentDisposition) {
424+
for (const auto &file : std::as_const(contentDisposition)) {
426425
if (file.contains(QString("filename"))) {
427426
filename = file.split(QString("="), Qt::SkipEmptyParts).at(1);
428427
break;

modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.h.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ public:
4141
QByteArray request_body;
4242

4343
{{prefix}}HttpRequestInput();
44-
{{prefix}}HttpRequestInput(QString v_url_str, QString v_http_method);
44+
{{prefix}}HttpRequestInput(const QString &v_url_str, const QString &v_http_method);
4545
void initialize();
46-
void add_var(QString key, QString value);
47-
void add_file(QString variable_name, QString local_filename, QString request_filename, QString mime_type);
46+
void add_var(const QString &key, const QString &value);
47+
void add_file(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime_type);
4848
};
4949

5050
class {{prefix}}HttpRequestWorker : public QObject {
@@ -59,7 +59,7 @@ public:
5959
QString error_str;
6060

6161
QMap<QString, QString> getResponseHeaders() const;
62-
QString http_attribute_encode(QString attribute_name, QString input);
62+
QString http_attribute_encode(const QString &attribute_name, const QString &input);
6363
void execute({{prefix}}HttpRequestInput *input);
6464
static QSslConfiguration *sslDefaultConfiguration;
6565
void setTimeOut(int timeOutMs);

modules/openapi-generator/src/main/resources/cpp-qt-client/README.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void Example::exampleFunction1(){
8383
connect(&apiInstance, &{{{classname}}}::{{nickname}}Signal, [&]() {
8484
loop.quit();
8585
});
86-
connect(&apiInstance, &{{{classname}}}::{{nickname}}SignalE, [&](QNetworkReply::NetworkError, QString error_str) {
86+
connect(&apiInstance, &{{{classname}}}::{{nickname}}SignalE, [&](QNetworkReply::NetworkError, const QString &error_str) {
8787
qDebug() << "Error happened while issuing request : " << error_str;
8888
loop.quit();
8989
});

modules/openapi-generator/src/main/resources/cpp-qt-client/enum.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class {{prefix}}Enum {
1515
public:
1616
{{prefix}}Enum() {}
1717

18-
{{prefix}}Enum(QString jsonString) {
18+
{{prefix}}Enum(const QString &jsonString) {
1919
fromJson(jsonString);
2020
}
2121

@@ -35,7 +35,7 @@ public:
3535
return obj;
3636
}
3737

38-
virtual void fromJson(QString jsonString) {
38+
virtual void fromJson(const QString &jsonString) {
3939
jstr = jsonString;
4040
}
4141

modules/openapi-generator/src/main/resources/cpp-qt-client/model-body.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace {{this}} {
1313
{{/cppNamespaceDeclarations}}
1414

15-
{{classname}}::{{classname}}(QString json) {
15+
{{classname}}::{{classname}}(const QString &json) {
1616
this->initializeModel();
1717
this->fromJson(json);
1818
}
@@ -33,7 +33,7 @@ void {{classname}}::initializeModel() {
3333
m_value = e{{classname}}::INVALID_VALUE_OPENAPI_GENERATED;{{/isEnum}}
3434
}
3535

36-
void {{classname}}::fromJson(QString jsonString) {
36+
void {{classname}}::fromJson(const QString &jsonString) {
3737
{{^isEnum}}QByteArray array(jsonString.toStdString().c_str());
3838
QJsonDocument doc = QJsonDocument::fromJson(array);
3939
QJsonObject jsonObject = doc.object();

modules/openapi-generator/src/main/resources/cpp-qt-client/model-header.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ namespace {{this}} {
2727
class {{classname}} : public {{prefix}}{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Enum{{/isEnum}} {
2828
public:
2929
{{classname}}();
30-
{{classname}}(QString json);
30+
{{classname}}(const QString &json);
3131
~{{classname}}() override;
3232

3333
QString asJson() const override;
3434
QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} asJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}() const override;
3535
void fromJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}(QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} json) override;
36-
void fromJson(QString jsonString) override;
36+
void fromJson(const QString &jsonString) override;
3737
{{^isEnum}}{{#vars}}
3838
{{#deprecated}}Q_DECL_DEPRECATED {{/deprecated}}{{{dataType}}} {{getter}}() const;
3939
{{#deprecated}}Q_DECL_DEPRECATED {{/deprecated}}void {{setter}}(const {{{dataType}}} &{{name}});

modules/openapi-generator/src/main/resources/cpp-qt-client/oauth.cpp.mustache

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void OauthBase::onFinish(QNetworkReply *rep)
2222
addToken(oauthToken(token, expiresIn, scope, type));
2323
}
2424

25-
oauthToken OauthBase::getToken(QString scope)
25+
oauthToken OauthBase::getToken(const QString &scope)
2626
{
2727
auto tokenIt = m_oauthTokenMap.find(scope);
2828
return tokenIt != m_oauthTokenMap.end() ? tokenIt.value() : oauthToken();
@@ -35,7 +35,7 @@ void OauthBase::addToken(oauthToken token)
3535
3636
}
3737

38-
void OauthBase::removeToken(QString scope)
38+
void OauthBase::removeToken(const QString &scope)
3939
{
4040
m_oauthTokenMap.remove(scope);
4141
}
@@ -59,7 +59,7 @@ void OauthCode::unlink()
5959
disconnect(&m_server, nullptr, nullptr, nullptr);
6060
}
6161

62-
void OauthCode::setVariables(QString authUrl, QString tokenUrl, QString scope, QString state, QString redirectUri, QString clientId, QString clientSecret, QString accessType){
62+
void OauthCode::setVariables(const QString &authUrl, const QString &tokenUrl, const QString &scope, const QString &state, const QString &redirectUri, const QString &clientId, const QString &clientSecret, const QString &accessType){
6363
6464
m_authUrl = QUrl(authUrl);
6565
m_tokenUrl = QUrl(tokenUrl);
@@ -126,7 +126,7 @@ void OauthImplicit::unlink()
126126
m_linked = false;
127127
}
128128

129-
void OauthImplicit::setVariables(QString authUrl, QString scope, QString state, QString redirectUri, QString clientId, QString accessType){
129+
void OauthImplicit::setVariables(const QString &authUrl, const QString &scope, const QString &state, const QString &redirectUri, const QString &clientId, const QString &accessType){
130130
131131
m_authUrl = QUrl(authUrl);
132132
m_scope = scope;
@@ -168,7 +168,7 @@ void OauthCredentials::unlink()
168168
disconnect(this, nullptr, nullptr, nullptr);
169169
}
170170

171-
void OauthCredentials::setVariables(QString tokenUrl, QString scope, QString clientId, QString clientSecret){
171+
void OauthCredentials::setVariables(const QString &tokenUrl, const QString &scope, const QString &clientId, const QString &clientSecret){
172172
173173
m_tokenUrl = QUrl(tokenUrl);
174174
m_scope = scope;
@@ -211,7 +211,7 @@ void OauthPassword::unlink()
211211
disconnect(this, nullptr, nullptr, nullptr);
212212
}
213213

214-
void OauthPassword::setVariables(QString tokenUrl, QString scope, QString clientId, QString clientSecret, QString username, QString password){
214+
void OauthPassword::setVariables(const QString &tokenUrl, const QString &scope, const QString &clientId, const QString &clientSecret, const QString &username, const QString &password){
215215
216216
m_tokenUrl = QUrl(tokenUrl);
217217
m_scope = scope;
@@ -346,4 +346,4 @@ void ReplyServer::read()
346346
347347
{{#cppNamespaceDeclarations}}
348348
} // namespace {{this}}
349-
{{/cppNamespaceDeclarations}}
349+
{{/cppNamespaceDeclarations}}

modules/openapi-generator/src/main/resources/cpp-qt-client/oauth.h.mustache

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class ReplyServer : public QTcpServer
5353
Q_OBJECT
5454
public:
5555
explicit ReplyServer(QObject *parent = nullptr);
56-
void setReply(QByteArray reply){m_reply = reply;};
56+
void setReply(const QByteArray &reply) {m_reply = reply;};
5757
void run();
5858
private:
5959
QByteArray m_reply;
@@ -74,9 +74,9 @@ class OauthBase : public QObject
7474
Q_OBJECT
7575
public:
7676
OauthBase(QObject* parent = nullptr) : QObject(parent) {};
77-
oauthToken getToken(QString scope);
77+
oauthToken getToken(const QString &scope);
7878
void addToken(oauthToken token);
79-
void removeToken(QString scope);
79+
void removeToken(const QString &scope);
8080
bool linked(){return m_linked;};
8181
virtual void link()=0;
8282
virtual void unlink()=0;
@@ -105,7 +105,7 @@ public:
105105
OauthCode(QObject *parent = nullptr);
106106
void link() override;
107107
void unlink() override;
108-
void setVariables(QString authUrl, QString tokenUrl, QString scope, QString state, QString redirectUri, QString clientId, QString clientSecret, QString accessType = "");
108+
void setVariables(const QString &authUrl, const QString &tokenUrl, const QString &scope, const QString &state, const QString &redirectUri, const QString &clientId, const QString &clientSecret, const QString &accessType = QString());
109109
110110
private:
111111
ReplyServer m_server;
@@ -124,7 +124,7 @@ public:
124124
OauthImplicit(QObject *parent = nullptr);
125125
void link() override;
126126
void unlink() override;
127-
void setVariables(QString authUrl, QString scope, QString state, QString redirectUri, QString clientId, QString accessType = "");
127+
void setVariables(const QString &authUrl, const QString &scope, const QString &state, const QString &redirectUri, const QString &clientId, const QString &accessType = QString());
128128
129129
private:
130130
ReplyServer m_server;
@@ -142,7 +142,7 @@ public:
142142
OauthCredentials(QObject *parent = nullptr);
143143
void link() override;
144144
void unlink() override;
145-
void setVariables(QString tokenUrl, QString scope, QString clientId, QString clientSecret);
145+
void setVariables(const QString &tokenUrl, const QString &scope, const QString &clientId, const QString &clientSecret);
146146
147147
public Q_SLOTS:
148148
void authenticationNeededCallback() override;
@@ -157,7 +157,7 @@ public:
157157
OauthPassword(QObject *parent = nullptr);
158158
void link() override;
159159
void unlink() override;
160-
void setVariables(QString tokenUrl, QString scope, QString clientId, QString clientSecret, QString username, QString password);
160+
void setVariables(const QString &tokenUrl, const QString &scope, const QString &clientId, const QString &clientSecret, const QString &username, const QString &password);
161161
162162
private:
163163
QString m_username, m_password;

modules/openapi-generator/src/main/resources/cpp-qt-client/object.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class {{prefix}}Object {
1414
public:
1515
{{prefix}}Object() {}
1616

17-
{{prefix}}Object(QString jsonString) {
17+
{{prefix}}Object(const QString &jsonString) {
1818
fromJson(jsonString);
1919
}
2020

@@ -29,7 +29,7 @@ public:
2929
return doc.toJson(QJsonDocument::Compact);
3030
}
3131

32-
virtual void fromJson(QString jsonString) {
32+
virtual void fromJson(const QString &jsonString) {
3333
QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8());
3434
jObj = doc.object();
3535
}

samples/client/petstore/cpp-qt-addDownloadProgress/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void Example::exampleFunction1(){
6363
connect(&apiInstance, &PFXFakeApi::getEnumInlineOrRefSignal, [&]() {
6464
loop.quit();
6565
});
66-
connect(&apiInstance, &PFXFakeApi::getEnumInlineOrRefSignalE, [&](QNetworkReply::NetworkError, QString error_str) {
66+
connect(&apiInstance, &PFXFakeApi::getEnumInlineOrRefSignalE, [&](QNetworkReply::NetworkError, const QString &error_str) {
6767
qDebug() << "Error happened while issuing request : " << error_str;
6868
loop.quit();
6969
});
@@ -74,7 +74,7 @@ void Example::exampleFunction1(){
7474
connect(&apiInstance, &PFXFakeApi::getEnumInlineOrRefSignal, [&]() {
7575
loop.quit();
7676
});
77-
connect(&apiInstance, &PFXFakeApi::getEnumInlineOrRefSignalE, [&](QNetworkReply::NetworkError, QString error_str) {
77+
connect(&apiInstance, &PFXFakeApi::getEnumInlineOrRefSignalE, [&](QNetworkReply::NetworkError, const QString &error_str) {
7878
qDebug() << "Error happened while issuing request : " << error_str;
7979
loop.quit();
8080
});

0 commit comments

Comments
 (0)