Beispiel #1
0
 def box_scalar(self, x, t):
     if isinstance(t, BoolT):
         return "PyBool_FromLong(%s)" % x
     elif isinstance(t, NoneT):
         self.append("Py_INCREF(Py_None);")
         return "Py_None"
     if x.replace("_", "").isalpha():
         scalar = x
     else:
         scalar = self.fresh_name("scalar")
         self.append("%s %s = %s;" % (to_ctype(t), scalar, x))
     return "PyArray_Scalar(&%s, PyArray_DescrFromType(%s), NULL)" % (scalar, to_dtype(t))
Beispiel #2
0
    def visit_Alloc(self, expr):
        elt_t = expr.elt_type
        nelts = self.fresh_var("npy_intp", "nelts", self.visit_expr(expr.count))

        return "(PyArrayObject*) PyArray_SimpleNew(1, &%s, %s)" % (nelts, to_dtype(elt_t))
Beispiel #3
0
 def visit_AllocArray(self, expr):
     shape = self.tuple_to_stack_array(expr.shape)
     t = to_dtype(elt_type(expr.type))
     return "(PyArrayObject*) PyArray_SimpleNew(%d, %s, %s)" % (expr.type.rank, shape, t)