Files
tubestation/toolkit/components/telemetry/gen-histogram-enum.py
Nathan Froyd a088ae0bef Bug 968923 - part 1 - add infrastructure for defining use counters from UseCounters.conf; original-author=heycam; r=heycam,gfritzsche,mshal
This patch adds UseCounter.conf for defining use counters along with
infrastructure to generate enums and telemetry identifiers from
UseCounter.conf.
2015-02-04 17:00:00 -05:00

66 lines
2.2 KiB
Python

# 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/.
# Write out a C++ enum definition whose members are the names of
# histograms as well as the following other members:
#
# - HistogramCount
# - HistogramFirstUseCounter
# - HistogramLastUseCounter
# - HistogramUseCounterCount
#
# The histograms are defined in files provided as command-line arguments.
import histogram_tools
import itertools
import sys
banner = """/* This file is auto-generated, see gen-histogram-enum.py. */
"""
def main(argv):
filenames = argv
print banner
print "enum ID : uint32_t {"
groups = itertools.groupby(histogram_tools.from_files(filenames),
lambda h: h.name().startswith("USE_COUNTER_"))
seen_use_counters = False
# Note that histogram_tools.py guarantees that all of the USE_COUNTER_*
# histograms are defined in a contiguous block. We therefore assume
# that there's at most one group for which use_counter_group is true.
for (use_counter_group, histograms) in groups:
if use_counter_group:
seen_use_counters = True
# The HistogramDUMMY* enum variables are used to make the computation
# of Histogram{First,Last}UseCounter easier. Otherwise, we'd have to
# special case the first and last histogram in the group.
if use_counter_group:
print " HistogramFirstUseCounter,"
print " HistogramDUMMY1 = HistogramFirstUseCounter - 1,"
for histogram in histograms:
cpp_guard = histogram.cpp_guard()
if cpp_guard:
print "#if defined(%s)" % cpp_guard
print " %s," % histogram.name()
if cpp_guard:
print "#endif"
if use_counter_group:
print " HistogramDUMMY2,"
print " HistogramLastUseCounter = HistogramDUMMY2 - 1,"
print " HistogramCount,"
if seen_use_counters:
print " HistogramUseCounterCount = HistogramLastUseCounter - HistogramFirstUseCounter + 1"
else:
print " HistogramUseCounterCount = 0"
print "};"
main(sys.argv[1:])