Esempio n. 1
0
    def rec(self, expr, prec, type_context=None, needed_dtype=None):
        if needed_dtype is None:
            return RecursiveMapper.rec(self, expr, prec, type_context)

        return self.wrap_in_typecast(
            self.infer_type(expr), needed_dtype,
            RecursiveMapper.rec(self, expr, PREC_NONE, type_context))
Esempio n. 2
0
    def rec(self, expr, prec, type_context=None, needed_dtype=None):
        if needed_dtype is None:
            return RecursiveMapper.rec(self, expr, prec, type_context)

        return self.wrap_in_typecast(
                self.infer_type(expr), needed_dtype,
                RecursiveMapper.rec(self, expr, PREC_NONE, type_context))
Esempio n. 3
0
    def rec(self, expr, type_context=None, needed_dtype=None):
        if needed_dtype is None:
            return RecursiveMapper.rec(self, expr, type_context)

        return self.wrap_in_typecast_lazy(
            lambda: self.infer_type(expr), needed_dtype,
            RecursiveMapper.rec(self, expr, type_context))
Esempio n. 4
0
    def rec(self, expr, prec, type_context=None, needed_dtype=None):
        if needed_dtype is None:
            return RecursiveMapper.rec(self, expr, prec, type_context)

        actual_type = self.infer_type(expr)

        if actual_type.kind == "c" and needed_dtype.kind == "c" and actual_type != needed_dtype:
            result = RecursiveMapper.rec(self, expr, PREC_NONE, type_context)
            return "%s_cast(%s)" % (self.complex_type_name(needed_dtype), result)
        elif actual_type.kind != "c" and needed_dtype.kind == "c":
            result = RecursiveMapper.rec(self, expr, PREC_NONE, type_context)
            return "%s_fromreal(%s)" % (self.complex_type_name(needed_dtype), result)
        else:
            return RecursiveMapper.rec(self, expr, prec, type_context)