Warning, /pim/libkgapi/tools/schema_generator/templates/macros/serializers.j2 is written in an unsupported language. File is not indexed.
0001 {# 0002 SPDX-FileCopyrightText: 2021 Daniel Vrátil <dvratil@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only 0005 SPDX-License-Identifier: LGPL-3.0-only 0006 SPDX-License-Identifier: LicenseRef-KDE-Accepted-LGPL 0007 #} 0008 0009 {% macro render_json_serializer(schema) %} 0010 QJsonValue {{ schema.name }}::toJSON() const { 0011 QJsonObject obj; 0012 {% for prop in schema.properties -%} 0013 {%- if prop.type.is_builtin and not prop.type.is_array %} 0014 {%- if prop.type.is_builtin and prop.type.orig_ref %} 0015 {%- else %} 0016 obj.insert(QStringView{u"{{ prop.orig_name }}"}, d->{{ prop.name }}); 0017 {%- endif %} 0018 {%- elif prop.type.is_ref or prop.type.is_object %} 0019 obj.insert(QStringView{u"{{ prop.orig_name }}"}, d->{{ prop.name }}.toJSON()); 0020 {%- elif prop.type.is_array %} 0021 { 0022 QJsonArray arr; 0023 std::transform(d->{{ prop.name }}.cbegin(), d->{{ prop.name }}.cend(), std::back_inserter(arr), 0024 [](const auto &val) { 0025 {%- if prop.type.element_type.is_builtin %} 0026 return val; 0027 {%- elif prop.type.element_type.is_ref or prop.type.element_type.is_object %} 0028 return val.toJSON(); 0029 {%- elif prop.type.element_type.is_enum %} 0030 switch (val) { 0031 {%- for enum_val in prop.type.element_type.values %} 0032 case {{ prop.type.element_type.name }}::{{ enum_val.name }}: 0033 return QStringLiteral("{{ enum_val.name }}"); 0034 {%- endfor %} 0035 } 0036 {%- endif %} 0037 }); 0038 obj.insert(QStringView{u"{{ prop.orig_name }}"}, std::move(arr)); 0039 } 0040 {%- elif prop.type.is_enum %} 0041 switch (d->{{ prop.name }}) { 0042 {%- for enum_val in prop.type.values %} 0043 case {{ prop.type.name }}::{{ enum_val.name }}: 0044 obj.insert(QStringView{u"{{ prop.orig_name }}"}, QStringLiteral(u"{{ enum_val.name }}")); 0045 break; 0046 {%- endfor %} 0047 } 0048 {%- endif %} 0049 {%- endfor %} 0050 return obj; 0051 } 0052 {% endmacro %} 0053 0054 {% macro render_json_parser(schema, is_ptr) %} 0055 {{ schema.name }}{% if is_ptr %}Ptr{% endif %} {{ schema.name }}::fromJSON(const QJsonObject &obj) { 0056 Q_UNUSED(obj); 0057 return {{ schema.name }}{% if is_ptr %}Ptr{% endif %}(); 0058 } 0059 {% endmacro %}