"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
===- SymbolicExpression.proto -------------------------------*- Proto -*-===//

 Copyright (C) 2020 GrammaTech, Inc.

 This code is licensed under the MIT license. See the LICENSE file in the
 project root for license terms.

 This project is sponsored by the Office of Naval Research, One Liberty
 Center, 875 N. Randolph Street, Arlington, VA 22203 under contract #
 N68335-17-C-0700.  The content of the information does not necessarily
 reflect the position or policy of the Government and no official
 endorsement should be inferred.

===----------------------------------------------------------------------===//
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _SymAttribute:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SymAttributeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SymAttribute.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    GOT: _SymAttribute.ValueType  # 0
    """ELF"""
    GOTPC: _SymAttribute.ValueType  # 1
    GOTOFF: _SymAttribute.ValueType  # 2
    GOTREL: _SymAttribute.ValueType  # 3
    PLT: _SymAttribute.ValueType  # 4
    PLTOFF: _SymAttribute.ValueType  # 5
    PCREL: _SymAttribute.ValueType  # 6
    SECREL: _SymAttribute.ValueType  # 7
    TLS: _SymAttribute.ValueType  # 8
    TLSGD: _SymAttribute.ValueType  # 9
    TLSLD: _SymAttribute.ValueType  # 10
    TLSLDM: _SymAttribute.ValueType  # 11
    TLSCALL: _SymAttribute.ValueType  # 12
    TLSDESC: _SymAttribute.ValueType  # 13
    TPREL: _SymAttribute.ValueType  # 14
    TPOFF: _SymAttribute.ValueType  # 15
    DTPREL: _SymAttribute.ValueType  # 16
    DTPOFF: _SymAttribute.ValueType  # 17
    NTPOFF: _SymAttribute.ValueType  # 18
    DTPMOD: _SymAttribute.ValueType  # 19
    PAGE: _SymAttribute.ValueType  # 20
    PAGEOFF: _SymAttribute.ValueType  # 21
    CALL: _SymAttribute.ValueType  # 22
    LO: _SymAttribute.ValueType  # 23
    HI: _SymAttribute.ValueType  # 24
    HIGHER: _SymAttribute.ValueType  # 25
    HIGHEST: _SymAttribute.ValueType  # 26
    GOTNTPOFF: _SymAttribute.ValueType  # 1000
    """X86"""
    INDNTPOFF: _SymAttribute.ValueType  # 1001
    G0: _SymAttribute.ValueType  # 2001
    """ARM"""
    G1: _SymAttribute.ValueType  # 2002
    G2: _SymAttribute.ValueType  # 2003
    G3: _SymAttribute.ValueType  # 2004
    UPPER16: _SymAttribute.ValueType  # 2005
    LOWER16: _SymAttribute.ValueType  # 2006
    LO12: _SymAttribute.ValueType  # 2007
    LO15: _SymAttribute.ValueType  # 2008
    LO14: _SymAttribute.ValueType  # 2009
    HI12: _SymAttribute.ValueType  # 2010
    HI21: _SymAttribute.ValueType  # 2011
    S: _SymAttribute.ValueType  # 2012
    PG: _SymAttribute.ValueType  # 2013
    NC: _SymAttribute.ValueType  # 2014
    ABS: _SymAttribute.ValueType  # 2015
    PREL: _SymAttribute.ValueType  # 2016
    PREL31: _SymAttribute.ValueType  # 2017
    TARGET1: _SymAttribute.ValueType  # 2018
    TARGET2: _SymAttribute.ValueType  # 2019
    SBREL: _SymAttribute.ValueType  # 2020
    TLSLDO: _SymAttribute.ValueType  # 2021
    HI16: _SymAttribute.ValueType  # 3000
    """MIPS"""
    LO16: _SymAttribute.ValueType  # 3001
    GPREL: _SymAttribute.ValueType  # 3002
    DISP: _SymAttribute.ValueType  # 3003
    OFST: _SymAttribute.ValueType  # 3004
    H: _SymAttribute.ValueType  # 4000
    """PPC"""
    L: _SymAttribute.ValueType  # 4001
    HA: _SymAttribute.ValueType  # 4002
    HIGH: _SymAttribute.ValueType  # 4003
    HIGHA: _SymAttribute.ValueType  # 4004
    HIGHERA: _SymAttribute.ValueType  # 4005
    HIGHESTA: _SymAttribute.ValueType  # 4006
    TOCBASE: _SymAttribute.ValueType  # 4007
    TOC: _SymAttribute.ValueType  # 4008
    NOTOC: _SymAttribute.ValueType  # 4009

class SymAttribute(_SymAttribute, metaclass=_SymAttributeEnumTypeWrapper):
    """NOTE:
    We do not generalize or otherwise unify relocation attributes across
    architectures and instead prefer an explicit mapping of attributes names
    to the labels used in the assembly of each architecture.
    """

GOT: SymAttribute.ValueType  # 0
"""ELF"""
GOTPC: SymAttribute.ValueType  # 1
GOTOFF: SymAttribute.ValueType  # 2
GOTREL: SymAttribute.ValueType  # 3
PLT: SymAttribute.ValueType  # 4
PLTOFF: SymAttribute.ValueType  # 5
PCREL: SymAttribute.ValueType  # 6
SECREL: SymAttribute.ValueType  # 7
TLS: SymAttribute.ValueType  # 8
TLSGD: SymAttribute.ValueType  # 9
TLSLD: SymAttribute.ValueType  # 10
TLSLDM: SymAttribute.ValueType  # 11
TLSCALL: SymAttribute.ValueType  # 12
TLSDESC: SymAttribute.ValueType  # 13
TPREL: SymAttribute.ValueType  # 14
TPOFF: SymAttribute.ValueType  # 15
DTPREL: SymAttribute.ValueType  # 16
DTPOFF: SymAttribute.ValueType  # 17
NTPOFF: SymAttribute.ValueType  # 18
DTPMOD: SymAttribute.ValueType  # 19
PAGE: SymAttribute.ValueType  # 20
PAGEOFF: SymAttribute.ValueType  # 21
CALL: SymAttribute.ValueType  # 22
LO: SymAttribute.ValueType  # 23
HI: SymAttribute.ValueType  # 24
HIGHER: SymAttribute.ValueType  # 25
HIGHEST: SymAttribute.ValueType  # 26
GOTNTPOFF: SymAttribute.ValueType  # 1000
"""X86"""
INDNTPOFF: SymAttribute.ValueType  # 1001
G0: SymAttribute.ValueType  # 2001
"""ARM"""
G1: SymAttribute.ValueType  # 2002
G2: SymAttribute.ValueType  # 2003
G3: SymAttribute.ValueType  # 2004
UPPER16: SymAttribute.ValueType  # 2005
LOWER16: SymAttribute.ValueType  # 2006
LO12: SymAttribute.ValueType  # 2007
LO15: SymAttribute.ValueType  # 2008
LO14: SymAttribute.ValueType  # 2009
HI12: SymAttribute.ValueType  # 2010
HI21: SymAttribute.ValueType  # 2011
S: SymAttribute.ValueType  # 2012
PG: SymAttribute.ValueType  # 2013
NC: SymAttribute.ValueType  # 2014
ABS: SymAttribute.ValueType  # 2015
PREL: SymAttribute.ValueType  # 2016
PREL31: SymAttribute.ValueType  # 2017
TARGET1: SymAttribute.ValueType  # 2018
TARGET2: SymAttribute.ValueType  # 2019
SBREL: SymAttribute.ValueType  # 2020
TLSLDO: SymAttribute.ValueType  # 2021
HI16: SymAttribute.ValueType  # 3000
"""MIPS"""
LO16: SymAttribute.ValueType  # 3001
GPREL: SymAttribute.ValueType  # 3002
DISP: SymAttribute.ValueType  # 3003
OFST: SymAttribute.ValueType  # 3004
H: SymAttribute.ValueType  # 4000
"""PPC"""
L: SymAttribute.ValueType  # 4001
HA: SymAttribute.ValueType  # 4002
HIGH: SymAttribute.ValueType  # 4003
HIGHA: SymAttribute.ValueType  # 4004
HIGHERA: SymAttribute.ValueType  # 4005
HIGHESTA: SymAttribute.ValueType  # 4006
TOCBASE: SymAttribute.ValueType  # 4007
TOC: SymAttribute.ValueType  # 4008
NOTOC: SymAttribute.ValueType  # 4009
global___SymAttribute = SymAttribute

class SymStackConst(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OFFSET_FIELD_NUMBER: builtins.int
    SYMBOL_UUID_FIELD_NUMBER: builtins.int
    offset: builtins.int
    symbol_uuid: builtins.bytes
    def __init__(
        self,
        *,
        offset: builtins.int = ...,
        symbol_uuid: builtins.bytes = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["offset", b"offset", "symbol_uuid", b"symbol_uuid"]) -> None: ...

global___SymStackConst = SymStackConst

class SymAddrConst(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OFFSET_FIELD_NUMBER: builtins.int
    SYMBOL_UUID_FIELD_NUMBER: builtins.int
    offset: builtins.int
    symbol_uuid: builtins.bytes
    def __init__(
        self,
        *,
        offset: builtins.int = ...,
        symbol_uuid: builtins.bytes = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["offset", b"offset", "symbol_uuid", b"symbol_uuid"]) -> None: ...

global___SymAddrConst = SymAddrConst

class SymAddrAddr(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SCALE_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    SYMBOL1_UUID_FIELD_NUMBER: builtins.int
    SYMBOL2_UUID_FIELD_NUMBER: builtins.int
    scale: builtins.int
    offset: builtins.int
    symbol1_uuid: builtins.bytes
    symbol2_uuid: builtins.bytes
    def __init__(
        self,
        *,
        scale: builtins.int = ...,
        offset: builtins.int = ...,
        symbol1_uuid: builtins.bytes = ...,
        symbol2_uuid: builtins.bytes = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["offset", b"offset", "scale", b"scale", "symbol1_uuid", b"symbol1_uuid", "symbol2_uuid", b"symbol2_uuid"]) -> None: ...

global___SymAddrAddr = SymAddrAddr

class SymbolicExpression(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ADDR_CONST_FIELD_NUMBER: builtins.int
    ADDR_ADDR_FIELD_NUMBER: builtins.int
    ATTRIBUTE_FLAGS_FIELD_NUMBER: builtins.int
    @property
    def addr_const(self) -> global___SymAddrConst: ...
    @property
    def addr_addr(self) -> global___SymAddrAddr: ...
    @property
    def attribute_flags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___SymAttribute.ValueType]: ...
    def __init__(
        self,
        *,
        addr_const: global___SymAddrConst | None = ...,
        addr_addr: global___SymAddrAddr | None = ...,
        attribute_flags: collections.abc.Iterable[global___SymAttribute.ValueType] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["addr_addr", b"addr_addr", "addr_const", b"addr_const", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["addr_addr", b"addr_addr", "addr_const", b"addr_const", "attribute_flags", b"attribute_flags", "value", b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["addr_const", "addr_addr"] | None: ...

global___SymbolicExpression = SymbolicExpression
