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))
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))
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)