1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-05-17 03:22:42 +00:00
harbour-sailfin/core/codegen/object_implementation.hbs

131 lines
2.7 KiB
Handlebars
Raw Permalink Normal View History

{{className}}::{{className}}() {}
{{#if hasRequiredProperties}}
{{className}}::{{className}} (
{{#each properties as |property|}}
{{#if property.isNotNullable}}
{{property.typeNameWithQualifiers}} {{property.name}}{{#if property.isLastNonNullable}} {{else}}, {{/if}}
{{/if}}
{{/each}}
) :
{{#each properties as |property|}}
{{#if property.isNotNullable}}
{{property.memberName}}({{property.name}})
{{#if property.isLastNonNullable}}
{ }
{{else}}
,
{{/if}}
{{/if}}
{{/each}}
{{/if}}
2021-03-24 19:04:03 +00:00
{{className}}::{{className}}(const {{className}} &other) :
{{#each properties as |property|}}
{{property.memberName}}(other.{{property.memberName}})
{{#if property.isLast}}
{}
{{else}}
,
{{/if}}
{{/each}}
void {{className}}::replaceData({{className}} &other) {
{{#each properties as |property|}}
{{property.memberName}} = other.{{property.memberName}};
{{/each}}
}
{{className}} {{className}}::fromJson(QJsonObject source) {
{{className}} instance;
instance.setFromJson(source);
return instance;
}
void {{className}}::setFromJson(QJsonObject source) {
{{#each properties as |property|}}
{{property.memberName}} = {{supportNamespace}}::fromJsonValue<{{property.typeNameWithQualifiers}}>(source["{{property.originalName}}"]);
{{/each}}
}
QJsonObject {{className}}::toJson() const {
QJsonObject result;
{{#each properties as |property|}}
{{#if property.isNullable}}
if (!({{property.nullableCheck}})) {
result["{{property.originalName}}"] = {{supportNamespace}}::toJsonValue<{{property.typeNameWithQualifiers}}>({{property.memberName}});
}
{{#else}}
result["{{property.originalName}}"] = {{supportNamespace}}::toJsonValue<{{property.typeNameWithQualifiers}}>({{property.memberName}});
{{/if}}
{{/each}}
return result;
}
{{#each properties as |property|}}
{{property.typeNameWithQualifiers}} {{className}}::{{property.name}}() const { return {{property.memberName}}; }
void {{className}}::set{{property.writeName}}({{property.typeNameWithQualifiers}} new{{property.writeName}}) {
{{property.memberName}} = new{{property.writeName}};
}
{{#if property.isNullable}}
2021-03-24 19:04:03 +00:00
bool {{className}}::{{property.name}}Null() const {
return {{property.nullableCheck}};
}
2021-03-24 19:04:03 +00:00
void {{className}}::set{{property.writeName}}Null() {
{{property.memberName}}{{property.nullableSetter}};
}
2021-03-24 19:04:03 +00:00
{{/if}}
{{/each}}
} // NS DTO
namespace Support {
using {{className}} = Jellyfin::DTO::{{className}};
template <>
{{className}} fromJsonValue(const QJsonValue &source, convertType<{{className}}>) {
if (!source.isObject()) throw ParseException("Expected JSON Object");
return {{className}}::fromJson(source.toObject());
}
template<>
QJsonValue toJsonValue(const {{className}} &source, convertType<{{className}}>) {
return source.toJson();
}