[pypy-commit] pypy numpy-record-dtypes: replace nice solution with ugly-but-rpython one.
fijal
noreply at buildbot.pypy.org
Tue Feb 7 13:14:01 CET 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: numpy-record-dtypes
Changeset: r52173:fe098533af7b
Date: 2012-02-07 14:13 +0200
http://bitbucket.org/pypy/pypy/changeset/fe098533af7b/
Log: replace nice solution with ugly-but-rpython one.
diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -817,6 +817,9 @@
self.s = StringBuilder(child.size * self.itemsize)
Call1.__init__(self, None, 'tostring', child.shape, dtype, dtype,
child)
+ self.res = W_NDimArray(1, [1], dtype, 'C')
+ self.res_casted = rffi.cast(rffi.CArrayPtr(lltype.Char),
+ self.res.storage)
def create_sig(self):
return signature.ToStringSignature(self.calc_dtype,
diff --git a/pypy/module/micronumpy/signature.py b/pypy/module/micronumpy/signature.py
--- a/pypy/module/micronumpy/signature.py
+++ b/pypy/module/micronumpy/signature.py
@@ -326,8 +326,10 @@
from pypy.module.micronumpy.interp_numarray import ToStringArray
assert isinstance(arr, ToStringArray)
- arr.s.append(self.dtype.itemtype.pack_str(
- self.child.eval(frame, arr.values)))
+ arr.res.setitem(0, self.child.eval(frame, arr.values).convert_to(
+ self.dtype))
+ for i in range(arr.itemsize):
+ arr.s.append(arr.res_casted[i])
class BroadcastLeft(Call2):
def _invent_numbering(self, cache, allnumbers):
diff --git a/pypy/rlib/rstruct/runpack.py b/pypy/rlib/rstruct/runpack.py
--- a/pypy/rlib/rstruct/runpack.py
+++ b/pypy/rlib/rstruct/runpack.py
@@ -4,11 +4,10 @@
"""
import py
-from struct import pack, unpack
+from struct import unpack
from pypy.rlib.rstruct.formatiterator import FormatIterator
from pypy.rlib.rstruct.error import StructError
from pypy.rlib.rstruct.nativefmttable import native_is_bigendian
-from pypy.rpython.extregistry import ExtRegistryEntry
class MasterReader(object):
def __init__(self, s):
More information about the pypy-commit
mailing list