| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from .composition_parts import Identifier |
| from .composition_parts import WithCodeGeneratorInfo |
| from .composition_parts import WithComponent |
| from .composition_parts import WithDebugInfo |
| from .ir_map import IRMap |
| |
| |
| class Includes(object): |
| """https://webidl.spec.whatwg.org/#include""" |
| |
| class IR(IRMap.IR, WithCodeGeneratorInfo, WithComponent, WithDebugInfo): |
| def __init__(self, |
| interface_identifier, |
| mixin_identifier, |
| component=None, |
| debug_info=None): |
| assert isinstance(interface_identifier, Identifier) |
| assert isinstance(mixin_identifier, Identifier) |
| |
| # Includes statements are treated similarly to partial definitions |
| # because it's convenient for IdlCompiler that 'includes' are |
| # grouped by interface's identifier, for example, a group of mixins |
| # are merged into an interface. So, the interface's identifier is |
| # turned into this IR's identifier. |
| IRMap.IR.__init__( |
| self, |
| identifier=interface_identifier, |
| kind=IRMap.IR.Kind.INCLUDES) |
| WithCodeGeneratorInfo.__init__(self) |
| WithComponent.__init__(self, component) |
| WithDebugInfo.__init__(self, debug_info) |
| |
| self.interafce_identifier = interface_identifier |
| self.mixin_identifier = mixin_identifier |
| |
| # Includes are not exposed publicly so far. |
| __init__ = None |