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 %}