Source code

Revision control

Copy as Markdown

Other Tools

// -*- mode: C++ -*-
{# 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 */
#ifndef mozilla_GleanJSMetricsLookup_h
#define mozilla_GleanJSMetricsLookup_h
#include <cstdint>
#include "mozilla/AlreadyAddRefed.h"
#include "mozilla/Maybe.h"
#include "mozilla/glean/bindings/GleanMetric.h"
#include "nsStringFwd.h"
class nsISupports;
namespace mozilla::glean {
// The category lookup table's entry type
using category_entry_t = uint32_t;
// The metric lookup table's entry type
// This is a bitpacked type with {{index_bits}} bits available to index into
// the string table, {{type_bits}} bits available to signify the metric type,
// and the remaining {{id_bits}} bits devoted to {{id_signal_bits}} "signal"
// bits to signify important characteristics (metric's a labeled metric's
// submetric, metric's been registered at runtime) and {{id_bits - id_signal_bits}} bits
// for built-in metric ids.
// Gives room for {{2 ** (id_bits - id_signal_bits)}} of each combination of
// characteristics (which hopefully will prove to be enough).
using metric_entry_t = uint64_t;
already_AddRefed<GleanMetric> NewMetricFromId(uint32_t id, nsISupports* aParent);
* Create a submetric instance for a labeled metric of the provided type and id for the given label.
* Assigns or retrieves an id for the submetric from the SDK.
* @param aParentTypeId - The type of the parent labeled metric identified as a number generated during codegen.
* Only used to identify which X of LabeledX you are so that X can be created here.
* @param aParentMetricId - The metric id for the parent labeled metric.
* @param aLabel - The label for the submetric. Might not adhere to the SDK label format.
* @param aSubmetricId - an outparam which is assigned the submetric's SDK-generated submetric id.
* Used only by GIFFT.
already_AddRefed<GleanMetric> NewSubMetricFromIds(uint32_t aParentTypeId, uint32_t aParentMetricId, const nsACString& aLabel, uint32_t* aSubmetricId, nsISupports* aParent);
* Get a category's name from the string table.
const char* GetCategoryName(category_entry_t entry);
* Get a metric's identifier from the string table.
const char* GetMetricIdentifier(metric_entry_t entry);
* Get a metric's id given its name.
Maybe<uint32_t> MetricByNameLookup(const nsACString&);
* Get a category's id given its name.
Maybe<uint32_t> CategoryByNameLookup(const nsACString&);
extern const category_entry_t sCategoryByNameLookupEntries[{{num_categories}}];
extern const metric_entry_t sMetricByNameLookupEntries[{{num_metrics}}];
} // namespace mozilla::glean
#endif // mozilla_GleanJSMetricsLookup_h