aboutsummaryrefslogtreecommitdiff
path: root/ql/ast/nodes/expressions/unary_operators/negative_operator.py
blob: 359ed2ec66d5d17dfebd2818d39a8d67d0770377 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from ql.ast.nodes.expressions.unary_operators.unary_operator import UnaryOperatorNode
from ql.types.decimal import QLDecimal
from ql.types.integer import QLInteger
from ql.types.money import QLMoney
from ql.types.undefined import QLUndefined


class NegativeOperatorNode(UnaryOperatorNode):
    def __init__(self, metadata, expression_type, expression, value):
        super(NegativeOperatorNode, self).__init__(metadata, expression_type, expression, value)
        self.__valid_types = {
            QLDecimal: QLDecimal,
            QLInteger: QLInteger,
            QLMoney: QLMoney}

    def get_result_type(self):
        if self.__valid_types.get(self.expression.expression_type):
            return self.__valid_types.get(self.expression.expression_type)

        return QLUndefined

    def evaluate(self):
        self.value = -self.expression.value