aboutsummaryrefslogtreecommitdiff
path: root/gtad/template.h.mustache
diff options
context:
space:
mode:
Diffstat (limited to 'gtad/template.h.mustache')
-rw-r--r--gtad/template.h.mustache119
1 files changed, 119 insertions, 0 deletions
diff --git a/gtad/template.h.mustache b/gtad/template.h.mustache
new file mode 100644
index 00000000..404aafe8
--- /dev/null
+++ b/gtad/template.h.mustache
@@ -0,0 +1,119 @@
+{{>preamble}}
+#pragma once
+
+{{#operations}}
+#include "jobs/basejob.h"{{/operations}}
+{{#models}}
+#include "converters.h"{{/models}}
+{{#imports}}
+#include {{_}}{{/imports}}
+
+namespace Quotient {
+{{#models}}
+
+// Data structures
+
+ {{#model}}
+{{>docCommentShort}}
+struct {{name}}{{#parents?}} : {{#parents}}{{name}}{{>cjoin}}{{/parents}}{{/parents?}}
+{ {{#vars}}
+
+ {{>docCommentShort}}
+ {{>maybeOmittableType}} {{nameCamelCase}};
+ {{/vars}}{{#propertyMap}}
+
+ {{>docCommentShort}}
+ {{>maybeOmittableType}} {{nameCamelCase}};
+ {{/propertyMap}}
+};
+
+template <> struct JsonObjectConverter<{{name}}>
+{
+ {{#in?}}
+ static void dumpTo(QJsonObject& jo, const {{name}}& pod);
+ {{/in?}}
+ {{#out?}}
+ static void fillFrom({{>maybeCrefJsonObject}} jo, {{name}}& pod);
+ {{/out?}}
+};
+ {{/model}}
+{{/models}}
+{{#operations}}
+
+// Operations
+ {{#operation}}
+
+/*!{{>docCommentSummary}}{{#description}}
+ * {{_}}{{/description}}
+ */
+class {{camelCaseOperationId}}Job : public BaseJob {
+public: {{#models}}
+ // Inner data structures
+ {{#model}}
+
+ {{>docCommentShort}}
+ struct {{name}}{{#parents?}} :
+ {{#parents}}{{name}}{{>cjoin}}{{/parents}}{{/parents?}}
+ {
+ {{#vars}}
+ {{>docCommentShort}}
+ {{>maybeOmittableType}} {{nameCamelCase}};
+ {{/vars}}
+ {{#propertyMap}}
+ {{>docCommentShort}}
+ {{>maybeOmittableType}} {{nameCamelCase}};
+ {{/propertyMap}}
+ };
+ {{/model}}
+
+ // Construction/destruction
+
+ {{/models}}
+ {{^allParams?}}
+ {{#summary}}
+ /// {{summary}}
+ {{/summary}}
+ {{/allParams?}}{{#allParams?}}
+ /*!{{>docCommentSummary}}
+ {{#allParams}}
+ * \param {{nameCamelCase}}{{#description}}
+ * {{_}}{{/description}}
+ {{/allParams}}
+ */
+ {{/allParams?}}
+ explicit {{camelCaseOperationId}}Job({{#allParams}}{{>joinedParamDecl}}{{/allParams}});
+ {{^bodyParams}}
+
+ /*! \brief Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for {{camelCaseOperationId}}Job
+ * is necessary but the job itself isn't.
+ */
+ static QUrl makeRequestUrl(QUrl baseUrl{{#allParams?}},
+ {{#allParams}}{{>joinedParamDecl}}{{/allParams}}{{/allParams?}});
+ {{/bodyParams}}
+ {{#responses}}{{#normalResponse?}}{{#allProperties?}}
+ ~{{camelCaseOperationId}}Job() override;
+
+ // Result properties
+ {{#allProperties}}
+
+ {{>docCommentShort}}
+ {{>maybeCrefType}} {{paramName}}(){{^moveOnly}} const{{/moveOnly}};
+ {{/allProperties}}
+
+protected: {{#producesNonJson?}}
+ Status parseReply(QNetworkReply* reply) override;
+ {{/producesNonJson?}}{{^producesNonJson?}}
+ Status parseJson(const QJsonDocument& data) override;
+ {{/producesNonJson?}}
+
+private:
+ class Private;
+ QScopedPointer<Private> d;
+ {{/allProperties?}}{{/normalResponse?}}{{/responses}}
+};
+ {{/operation}}
+{{/operations}}
+
+} // namespace Quotient