| # 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} |