def buffer_info(buf, ptr_type = ctypes.c_void_p): """Given a python buffer, return its address and length""" assert isinstance(buf, buffer) address = ptr_type() length = ctypes.c_ssize_t() obj = ctypes.py_object(buf) ctypes.pythonapi.PyObject_AsReadBuffer(obj, ctypes.byref(address), ctypes.byref(length)) return address, length.value
def node_init(self): assert isinstance(self.elt_type, ScalarT), \ "Can't create array with element type %s, currently only scalar elements supported" % \ (self.elt_type,) tuple_t = repeat_tuple(Int64, self.rank) self.shape_t = tuple_t self.strides_t = tuple_t self.ptr_t = ptr_type(self.elt_type) self._fields_ = [ ('data', self.ptr_t), ('shape', tuple_t), ('strides', tuple_t), ('offset', Int64), ('size', Int64), # ('dtype', TypeValueT(self.elt_type)) ]
def __init__(self, elt_type, rank): assert isinstance(elt_type, ScalarT), \ "Can't create array with element type %s, currently only scalar elements supported" % \ (elt_type,) self.elt_type = elt_type self.rank = rank tuple_t = repeat_tuple(Int64, self.rank) self.shape_t = tuple_t self.strides_t = tuple_t self.ptr_t = ptr_type(self.elt_type) self._fields_ = [ ('data', self.ptr_t), ('shape', tuple_t), ('strides', tuple_t), ('offset', Int64), ('size', Int64), # ('dtype', TypeValueT(self.elt_type)) ] self._hash = hash((elt_type, rank))