mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
18c155a5ec
This patch adds UseCounter.conf for defining use counters along with infrastructure to generate enums and telemetry identifiers from UseCounter.conf.
80 lines
2.8 KiB
Python
Executable File
80 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env 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/.
|
|
|
|
from __future__ import print_function
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
sys.path.append(os.path.dirname(__file__))
|
|
|
|
import usecounters
|
|
|
|
AUTOGENERATED_WARNING_COMMENT = "/* THIS FILE IS AUTOGENERATED BY gen-usercounters.py - DO NOT EDIT */"
|
|
|
|
def generate_list(f, counters):
|
|
def print_optional_macro_declare(name):
|
|
print('''
|
|
#ifndef %(name)s
|
|
#define %(name)s(interface_, name_) // nothing
|
|
#define DEFINED_%(name)s
|
|
#endif
|
|
''' % { 'name': name }, file=f)
|
|
|
|
def print_optional_macro_undeclare(name):
|
|
print('''
|
|
#ifdef DEFINED_%(name)s
|
|
#undef DEFINED_%(name)s
|
|
#undef %(name)s
|
|
#endif
|
|
''' % { 'name': name }, file=f)
|
|
|
|
print(AUTOGENERATED_WARNING_COMMENT, file=f)
|
|
|
|
print_optional_macro_declare('USE_COUNTER_DOM_METHOD')
|
|
print_optional_macro_declare('USE_COUNTER_DOM_ATTRIBUTE')
|
|
print_optional_macro_declare('USE_COUNTER_CSS_PROPERTY')
|
|
|
|
for counter in counters:
|
|
if counter['type'] == 'method':
|
|
print('USE_COUNTER_DOM_METHOD(%s, %s)' % (counter['interface_name'], counter['method_name']), file=f)
|
|
elif counter['type'] == 'attribute':
|
|
print('USE_COUNTER_DOM_ATTRIBUTE(%s, %s)' % (counter['interface_name'], counter['attribute_name']), file=f)
|
|
elif counter['type'] == 'property':
|
|
prop = counter['property_name']
|
|
print('USE_COUNTER_CSS_PROPERTY(%s, %s)' % (prop, prop.replace('-', '_')), file=f)
|
|
|
|
print_optional_macro_undeclare('USE_COUNTER_DOM_METHOD')
|
|
print_optional_macro_undeclare('USE_COUNTER_DOM_ATTRIBUTE')
|
|
print_optional_macro_undeclare('USE_COUNTER_CSS_PROPERTY')
|
|
|
|
def generate_property_map(f, counters):
|
|
print(AUTOGENERATED_WARNING_COMMENT, file=f)
|
|
print('''
|
|
enum {
|
|
// XXX is this the right define?
|
|
#define CSS_PROP_LIST_INCLUDE_LOGICAL
|
|
#define CSS_PROP(name_, id_, method_, flags_, pref_, parsevariant_, \\
|
|
kwtable_, stylestruct_, stylestructoffset_, animtype_) \\
|
|
USE_COUNTER_FOR_CSS_PROPERTY_##id_ = eUseCounter_UNKNOWN,
|
|
#include "nsCSSPropList.h"
|
|
#undef CSS_PROP
|
|
#undef CSS_PROP_LIST_INCLUDE_LOGICAL
|
|
};
|
|
''', file=f)
|
|
for counter in counters:
|
|
if counter['type'] == 'property':
|
|
prop = counter['property_name'].replace('-', '_')
|
|
print('#define USE_COUNTER_FOR_CSS_PROPERTY_%s eUseCounter_property_%s' % (prop, prop), file=f)
|
|
|
|
def use_counter_list(output_header, conf_filename):
|
|
counters = usecounters.read_conf(conf_filename)
|
|
generate_list(output_header, counters)
|
|
|
|
def property_map(output_map, conf_filename):
|
|
counters = usecounters.read_conf(conf_filename)
|
|
generate_property_map(output_map, counters)
|