# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

__all__ = ['IDENTIFIERS']

from generate.types import Identifier, Deny

# These are keywords and identifiers used in languages we support and in
# generated bindings. This list is maintained by hand and should be expanded
# to cover as many cases as we can think of.
#
# Each identifier has lower_camel_case name, a tag (used to maintain source
# stability when adding identifiers) and optionally a deny list.
#
# The deny list members specify a list of styles, uses and bindings to deny.
# The bindings list is used to decide whether to include certain identifiers
# in the generated fidl files. If a bindings list is included then a
# [BindingsDenyList] attribute will be used, if not then the identifier will
# be entirely ommitted from the affected contexts.

IDENTIFIERS = [
    Identifier('abstract', 1),
    Identifier('alignas', 2),
    Identifier('alignof', 3),
    Identifier('and', 4),
    Identifier('and_eq', 5),
    Identifier('as', 6),
    Identifier('asm', 7),
    Identifier('assert', 8),
    Identifier('async', 9),
    Identifier('atomic_cancel', 10),
    Identifier('atomic_commit', 11),
    Identifier('atomic_noexcept', 12),
    Identifier('auto', 13),
    Identifier('await', 14),
    Identifier('become', 15),
    Identifier('bitand', 16),
    Identifier('bitor', 17),
    Identifier('bool', 18),
    Identifier('box', 19),
    Identifier('break', 20),
    Identifier('byte', 21),
    Identifier('bytes', 215),
    Identifier('case', 22),
    Identifier('catch', 23),
    Identifier('chan', 24),
    Identifier('char', 25),
    Identifier('char16_t', 26),
    Identifier('char32_t', 27),
    Identifier('class', 28),
    Identifier('co_await', 29),
    Identifier('co_return', 30),
    Identifier('co_yield', 31),
    Identifier('coding_traits', 32),
    Identifier('compl', 33),
    Identifier('concept', 34),
    Identifier('const', 35),
    Identifier('const_cast', 36),
    Identifier('constexpr', 37),
    Identifier('continue', 38),
    Identifier('controller', 39),
    Identifier('covariant', 40),
    Identifier('crate', 41),
    Identifier('decltype', 42),
    Identifier('decoder', 43),
    Identifier('default', 44),
    Identifier('defer', 45),
    Identifier('deferred', 46),
    Identifier('delete', 47),
    Identifier('do', 48),
    Identifier('double', 49),
    Identifier('dynamic', 50),
    Identifier('dynamic_cast', 51),
    Identifier('else', 52),
    Identifier('encoder', 53),
    Identifier('ensure_values_instantiated', 54),
    Identifier('enum', 55),
    Identifier('empty', 56),
    Identifier('err', 57),
    Identifier('explicit', 58),
    Identifier('export', 59),
    Identifier('extends', 60),
    Identifier('extern', 61),
    Identifier('external', 62),
    Identifier('factory', 63),
    Identifier('fallthrough', 64),
    Identifier('false', 65),
    Identifier('fidl', 66),
    Identifier('fidl_type', 67),
    Identifier('final', 68),
    Identifier('finally', 69),
    Identifier('float', 70),
    Identifier('fn', 71),
    Identifier('for', 72),
    Identifier('friend', 73),
    Identifier('func', 74),
    Identifier('future', 75),
    Identifier('futures', 76),
    Identifier('get', 77),
    Identifier('go', 78),
    Identifier('goto', 79),
    Identifier('has_invalid_tag', 80),
    Identifier('hash_code', 81),
    Identifier('if', 82),
    Identifier('impl', 83),
    Identifier('implements', 84),
    Identifier('import', 85),
    Identifier('in', 86),
    Identifier('index', 87),
    Identifier('inline', 88),
    Identifier('int', 89),
    Identifier('int16', 90),
    Identifier('int32', 91),
    Identifier('int64', 92),
    Identifier('int8', 93),
    Identifier('interface', 94),
    Identifier('internal_tag', 95),
    Identifier('is', 96),
    Identifier('let', 97),
    Identifier('lhs', 98),
    Identifier('library', 99),
    Identifier('list', 100),
    Identifier('long', 101),
    Identifier('loop', 102),
    Identifier('macro', 103),
    Identifier('map', 104),
    Identifier('match', 105),
    Identifier('mixin', 106),
    Identifier('mod', 107),
    Identifier('module', 108),
    Identifier('move', 109),
    Identifier('mut', 110),
    Identifier('mutable', 111),
    Identifier('namespace', 112),
    Identifier('never', 113),
    Identifier('new', 114),
    Identifier('no_such_method', 115),
    Identifier('noexcept', 116),
    Identifier('none', 117),
    Identifier('not', 118),
    Identifier('not_eq', 119),
    Identifier('null', 120),
    Identifier('nullptr', 121),
    Identifier('num', 122),
    Identifier('object', 123),
    Identifier('offset', 124),
    Identifier('offsetof', 125),
    Identifier('ok', 126),
    Identifier('on_open', 127),
    Identifier('operator', 128),
    Identifier('option', 129),
    Identifier('or', 130),
    Identifier('or_eq', 131),
    Identifier('override', 132),
    Identifier('package', 133),
    Identifier('part', 134),
    Identifier('priv', 135),
    Identifier('private', 136),
    Identifier('proc', 137),
    Identifier('protected', 138),
    Identifier('proxy', 139),
    Identifier('pub', 140),
    Identifier('public', 141),
    Identifier('pure', 142),
    Identifier('range', 143),
    Identifier('ref', 144),
    Identifier('register', 145),
    Identifier('reinterpret_cast', 146),
    Identifier('requires', 147),
    Identifier('result', 148),
    Identifier('rethrow', 149),
    Identifier('return', 150),
    Identifier('rhs', 151),
    Identifier('rune', 152),
    Identifier('runtime_type', 153),
    Identifier('select', 154),
    Identifier('self', 155),
    Identifier('send', 156),
    Identifier('set', 157),
    Identifier('set_controller', 158),
    Identifier('short', 159),
    Identifier('signed', 160),
    Identifier('sizeof', 161),
    Identifier('some', 162),
    Identifier('static', 163),
    Identifier('static_assert', 164),
    Identifier('static_cast', 165),
    Identifier('stream', 166),
    Identifier('string', 167),
    Identifier('struct', 168),
    Identifier('stub', 169),
    Identifier('super', 170),
    Identifier('switch', 171),
    Identifier('synchronized', 172),
    Identifier('template', 173),
    Identifier('this', 174),
    Identifier('thread_local', 175),
    Identifier('throw', 176),
    Identifier('to_string', 177),
    Identifier('trait', 178),
    Identifier('true', 179),
    Identifier('try', 180),
    Identifier('type', 181),
    Identifier('typedef', 182),
    Identifier('typeid', 183),
    Identifier('typename', 184),
    Identifier('typeof', 185),
    Identifier('uint16', 186),
    # We use uint32 as a type in some tests which makes it conflict.
    # See also: fxbug.dev/38124 fxbug.dev/8042)
    Identifier(
        'uint32', 187, [
            Deny(
                styles=['lower'],
                uses=['constants', 'struct.types', 'table.names'])
        ]),
    Identifier('uint64', 188),
    Identifier('uint8', 189),
    Identifier('union', 190),
    Identifier('unknown', 216),
    Identifier('unknown_bytes', 217),
    # TODO(fxb/60495):  Remedy identifier clashes.
    Identifier('unknown_data', 218, [Deny(bindings=['dart'])]),
    Identifier('unsafe', 191),
    Identifier('unsigned', 192),
    Identifier('unsized', 193),
    Identifier('use', 194),
    Identifier('using', 195),
    Identifier('value', 196),
    Identifier('value_of', 197),
    Identifier('value_union', 198),
    Identifier('values_map', 199),
    Identifier('var', 200),
    Identifier('vec', 201),
    Identifier('virtual', 202),
    Identifier('void', 203),
    Identifier('volatile', 204),
    Identifier('wchar_t', 205),
    Identifier('where', 206),
    Identifier('which', 207),
    Identifier('while', 208),
    Identifier('with', 209),
    Identifier('xor', 210),
    Identifier('xor_eq', 211),
    Identifier('xunion', 212),
    Identifier('yield', 213),
    Identifier('zx', 214),
]