Exemplo n.º 1
0
 def visit_FunctionCall(self, node):
     if node.func.name in {'min', 'max'}:
         node.func.name = "f" + node.func.name
         # TODO: Add support for all math funcs
         self.includes.add("math.h")
         return super(Backend, self).generic_visit(node)
     # FIXME: This is specific for handling a map function
     # do we have to generalize?
     node.args = [self.visit(arg) for arg in node.args]
     func_tree = get_ast(self.symbol_table[node.func.name])
     func_tree = PyBasicConversions().visit(func_tree).body[0]
     func_tree = self.visit(func_tree)
     func_tree.name = C.SymbolRef(node.func.name)
     func_tree.set_static()
     func_tree.set_inline()
     self.defns.append(func_tree)
     # FIXME: Infer type
     for p in func_tree.params:
         p.type = ct.c_float()
     func_tree.return_type = ct.c_float()
     return node