// -*- mode: C++ -*- // AUTOGENERATED BY glean_parser. DO NOT EDIT. {# The rendered source is autogenerated, but this Jinja2 template is not. Please file bugs! #} /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_Metrics_h #define mozilla_Metrics_h #include "mozilla/glean/bindings/MetricTypes.h" namespace mozilla::glean { enum class NoExtraKeys {}; {% macro generate_extra_keys(obj) %} {% for name, suffix in obj["_generate_enums"] %} {% if obj|attr(name)|length %} enum class {{ obj.name|Camelize }}{{ suffix }} : int32_t { {% for key in obj|attr(name) %} {{ key | Camelize }}, {% endfor %} }; {% endif %} {% endfor %} {% endmacro %} {% for category_name, objs in all_objs.items() %} namespace {{ category_name|snake_case }} { {% for obj in objs.values() %} {% if obj.type|is_implemented_type %} /** * generated from {{ category_name }}.{{ obj.name }} */ {% if obj|attr("_generate_enums") %} {{ generate_extra_keys(obj) }} {%- endif %} /** * {{ obj.description|wordwrap() | replace('\n', '\n * ') }} */ constexpr impl::{{ obj|type_name }} {{obj.name|snake_case }}({{obj|metric_id}}); {% endif %} {% endfor %} } {% endfor %} } // namespace mozilla::glean #endif // mozilla_Metrics_h