Author: Alex Gaynor <alex.gay...@gmail.com> Branch: numpy-dtype-refactor Changeset: r49339:b42b84e29282 Date: 2011-11-11 14:13 -0500 http://bitbucket.org/pypy/pypy/changeset/b42b84e29282/
Log: more progress towards translating diff --git a/pypy/module/micronumpy/interp_ufuncs.py b/pypy/module/micronumpy/interp_ufuncs.py --- a/pypy/module/micronumpy/interp_ufuncs.py +++ b/pypy/module/micronumpy/interp_ufuncs.py @@ -238,7 +238,7 @@ elif dt.kind == interp_dtype.FLOATINGLTR: return interp_dtype.get_dtype_cache(space).w_float64dtype elif dt.kind == interp_dtype.UNSIGNEDLTR: - return space.fromcache(interp_dtype.W_UInt64Dtype) + return interp_dtype.get_dtype_cache(space).w_uint64dtype else: assert False return dt diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py --- a/pypy/module/micronumpy/types.py +++ b/pypy/module/micronumpy/types.py @@ -25,7 +25,8 @@ exp = sin = cos = tan = arcsin = arccos = arctan = arcsinh = \ arctanh = _unimplemented_ufunc -class Primitive(BaseType): +class Primitive(object): + _mixin_ = True def get_element_size(self): return rffi.sizeof(self.T) @@ -47,18 +48,18 @@ def read(self, ptr, offset): ptr = rffi.ptradd(ptr, offset) return self.box( - rffi.cast(lltype.Ptr(lltype.Array(self.T, hints={"nolength": True})), ptr)[0] + rffi.cast(rffi.CArrayPtr(self.T), ptr)[0] ) def store(self, ptr, offset, box): value = self.unbox(box) ptr = rffi.ptradd(ptr, offset) - rffi.cast(lltype.Ptr(lltype.Array(self.T, hints={"nolength": True})), ptr)[0] = value + rffi.cast(rffi.CArrayPtr(self.T), ptr)[0] = value def fill(self, ptr, box, n): value = self.unbox(box) for i in xrange(n): - rffi.cast(lltype.Ptr(lltype.Array(self.T, hints={"nolength": True})), ptr)[0] = value + rffi.cast(rffi.CArrayPtr(self.T), ptr)[0] = value ptr = rffi.ptradd(ptr, self.get_element_size()) def add(self, v1, v2): @@ -107,7 +108,7 @@ def min(self, v1, v2): return self.box(min(self.unbox(v1), self.unbox(v2))) -class Bool(Primitive): +class Bool(BaseType, Primitive): T = lltype.Bool BoxType = interp_boxes.W_BoolBox @@ -129,6 +130,8 @@ return "True" if value else "False" class Integer(Primitive): + _mixin_ = True + def _coerce(self, space, w_item): return self.box(space.int_w(space.int(w_item))) @@ -156,47 +159,49 @@ assert v == 0 return 0 -class Int8(Integer): +class Int8(BaseType, Integer): T = rffi.SIGNEDCHAR BoxType = interp_boxes.W_Int8Box -class UInt8(Integer): +class UInt8(BaseType, Integer): T = rffi.UCHAR BoxType = interp_boxes.W_UInt8Box -class Int16(Integer): +class Int16(BaseType, Integer): T = rffi.SHORT BoxType = interp_boxes.W_Int16Box -class UInt16(Integer): +class UInt16(BaseType, Integer): T = rffi.USHORT BoxType = interp_boxes.W_UInt16Box -class Int32(Integer): +class Int32(BaseType, Integer): T = rffi.INT BoxType = interp_boxes.W_Int32Box -class UInt32(Integer): +class UInt32(BaseType, Integer): T = rffi.UINT BoxType = interp_boxes.W_UInt32Box -class Long(Integer): +class Long(BaseType, Integer): T = rffi.LONG BoxType = interp_boxes.W_LongBox -class ULong(Integer): +class ULong(BaseType, Integer): T = rffi.ULONG BoxType = interp_boxes.W_ULongBox -class Int64(Integer): +class Int64(BaseType, Integer): T = rffi.LONGLONG BoxType = interp_boxes.W_Int64Box -class UInt64(Integer): +class UInt64(BaseType, Integer): T = rffi.ULONGLONG BoxType = interp_boxes.W_UInt64Box class Float(Primitive): + _mixin_ = True + def _coerce(self, space, w_item): return self.box(space.float_w(space.float(w_item))) @@ -293,10 +298,10 @@ return math.atanh(v) -class Float32(Float): +class Float32(BaseType, Float): T = rffi.FLOAT BoxType = interp_boxes.W_Float32Box -class Float64(Float): +class Float64(BaseType, Float): T = rffi.DOUBLE BoxType = interp_boxes.W_Float64Box \ No newline at end of file _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit