mirror of
https://github.com/mesonbuild/meson.git
synced 2026-06-24 08:48:03 +00:00
This avoids creating a dictionary every time an arithmetic operator is evaluated. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
38 lines
774 B
Python
38 lines
774 B
Python
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
from enum import Enum
|
|
import typing as T
|
|
|
|
class MesonOperator(Enum):
|
|
# Arithmetic
|
|
PLUS = '+'
|
|
MINUS = '-'
|
|
TIMES = '*'
|
|
DIV = '/'
|
|
MOD = '%'
|
|
|
|
UMINUS = 'uminus'
|
|
|
|
# Logic
|
|
NOT = 'not'
|
|
|
|
# Should return the boolsche interpretation of the value (`'' == false` for instance)
|
|
BOOL = 'bool()'
|
|
|
|
# Comparison
|
|
EQUALS = '=='
|
|
NOT_EQUALS = '!='
|
|
GREATER = '>'
|
|
LESS = '<'
|
|
GREATER_EQUALS = '>='
|
|
LESS_EQUALS = '<='
|
|
|
|
# Container
|
|
IN = 'in'
|
|
NOT_IN = 'not in'
|
|
INDEX = '[]'
|
|
|
|
# Accessing this directly is about 9x faster than calling MesonOperator(s),
|
|
# and about 3 times faster than a staticmethod
|
|
MAPPING: T.Mapping[str, MesonOperator] = {x.value: x for x in MesonOperator}
|