// -*- mode: C++ -*- /* This file is auto-generated by run_glean_parser.py. It is only for internal use by types in toolkit/components/glean/bindings/private */ {# The rendered source is autogenerated, but this Jinja2 template is not. Pleas file bugs! #} #include "mozilla/glean/bindings/Event.h" #include "mozilla/glean/GleanMetrics.h" namespace mozilla::glean { template <> /*static*/ const nsCString impl::EventMetric::ExtraStringForKey(uint32_t aKey) { MOZ_ASSERT_UNREACHABLE("What are you doing here? No extra keys!"); return ""_ns; } {% for category_name, objs in all_objs.items() %} {% for obj in objs.values() %} {% if obj|attr("_generate_enums") %} {# we always use the `extra` suffix, because we only expose the new event API #} {% set suffix = "Extra" %} {% for name, _ in obj["_generate_enums"] %} {% if obj|attr(name)|length %} {% set ns %}{{ category_name|snake_case }}{% endset %} {% set type %}{{ obj.name|Camelize }}{{ suffix }}{% endset %} template <> /*static*/ const nsCString impl::EventMetric<{{ ns }}::{{ type }}>::ExtraStringForKey(uint32_t aKey) { using {{ ns }}::{{ type }}; switch (aKey) { {% if obj|attr("telemetry_mirror") %}{# Optimization: Do not generate switch if not mirrored #} {% for key, _ in obj|attr(name) %} case {{loop.index-1}}: { return "{{ key }}"_ns; } {% endfor %} {% endif %} default: { MOZ_ASSERT_UNREACHABLE("Impossible event key reached."); return ""_ns; } } } {% endif %} {% endfor %} {% endif %} {% endfor %} {% endfor %} }; // namespace mozilla::glean