aboutsummaryrefslogtreecommitdiff
path: root/jobs/{{base}}.h.mustache
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2017-08-20 18:56:58 +0900
committerKitsune Ral <Kitsune-Ral@users.sf.net>2017-09-01 19:50:39 +0900
commitc28211698b8f9b82cafc0f9d9457e40c6c17632a (patch)
tree85e8d0b17476cc70b09156d5e034f4322c7b057f /jobs/{{base}}.h.mustache
parent45c138903c20d32a8a69b5637a72898bc690f1f1 (diff)
downloadlibquotient-c28211698b8f9b82cafc0f9d9457e40c6c17632a.tar.gz
libquotient-c28211698b8f9b82cafc0f9d9457e40c6c17632a.zip
Added files to (eventually) generate *Job classes automatically
KitsuneRal/api-generator project is a place where all the heavy lifting will (eventually) be implemented. This commit marks a point when the generated files at least compile (whether they work is not tested yet). Return values are so far entirely ignored.
Diffstat (limited to 'jobs/{{base}}.h.mustache')
-rw-r--r--jobs/{{base}}.h.mustache65
1 files changed, 65 insertions, 0 deletions
diff --git a/jobs/{{base}}.h.mustache b/jobs/{{base}}.h.mustache
new file mode 100644
index 00000000..6fb9caef
--- /dev/null
+++ b/jobs/{{base}}.h.mustache
@@ -0,0 +1,65 @@
+{{#@filePartial}}preamble{{/@filePartial}}
+
+#pragma once
+
+{{#operations}}
+#include "../basejob.h"
+{{/operations}}
+
+{{#imports}}
+#include {{.}}
+{{/imports}}
+
+{{#models}}
+#include <QtCore/QJsonValue> {{! FIXME: This should probably go inside imports }}
+{{/models}}
+
+namespace QMatrixClient
+{
+{{#models}}
+ // Data structures
+ {{#model}}
+ struct {{classname}}
+ {
+ {{#vars}}
+ {{datatype}} {{name}};
+ {{/vars}}
+ operator QJsonValue() const { return {}; }
+ };
+ {{/model}}
+{{/models}}
+{{#operations}}
+ // Operations
+ {{#operation}}
+ class {{#@cap}}{{operationId}}{{/@cap}}Job : public BaseJob
+ {
+ public:
+ {{#@cap}}{{operationId}}{{/@cap}}Job(const ConnectionData* connection
+ {{#allParams}}
+ , {{!}}
+ {{#avoidCopy?}}const {{dataType}}&{{/avoidCopy?}}
+ {{^avoidCopy?}}{{dataType}}{{/avoidCopy?}} {{paramName}}
+ {{/allParams}});
+ {{#returns?}}
+ virtual {{className}}Job();
+
+ {{#returns}}
+ {{type}} {{name}}() const;
+ {{/returns}}
+
+ protected:
+ {{#returnFile?}}
+ Status parseReply(QByteArray data) override;
+ {{/returnFile?}}
+ {{^returnFile}}
+ Status parseJson(const JsonDocument& data) override;
+ {{/returnFile}}
+
+ private:
+ class Private;
+ Private* d;
+ {{/returns?}}
+ };
+ {{/operation}}
+{{/operations}}
+} // namespace QMatrixClient