[pypy-svn] r50864 - in pypy/dist/pypy/module/_rawffi: . test
fijal at codespeak.net
fijal at codespeak.net
Tue Jan 22 12:01:25 CET 2008
Author: fijal
Date: Tue Jan 22 12:01:25 2008
New Revision: 50864
Modified:
pypy/dist/pypy/module/_rawffi/__init__.py
pypy/dist/pypy/module/_rawffi/interp_rawffi.py
pypy/dist/pypy/module/_rawffi/test/test__rawffi.py
Log:
A bit more friendly routine for ctypes (adheres to ctypes insanity)
Modified: pypy/dist/pypy/module/_rawffi/__init__.py
==============================================================================
--- pypy/dist/pypy/module/_rawffi/__init__.py (original)
+++ pypy/dist/pypy/module/_rawffi/__init__.py Tue Jan 22 12:01:25 2008
@@ -19,6 +19,7 @@
'sizeof' : 'interp_rawffi.sizeof',
'alignment' : 'interp_rawffi.alignment',
'charp2string' : 'interp_rawffi.charp2string',
+ 'charp2rawstring' : 'interp_rawffi.charp2rawstring',
'CallbackPtr' : 'callback.W_CallbackPtr',
}
Modified: pypy/dist/pypy/module/_rawffi/interp_rawffi.py
==============================================================================
--- pypy/dist/pypy/module/_rawffi/interp_rawffi.py (original)
+++ pypy/dist/pypy/module/_rawffi/interp_rawffi.py Tue Jan 22 12:01:25 2008
@@ -334,3 +334,10 @@
s = rffi.charp2strn(rffi.cast(rffi.CCHARP, address), maxlength)
return space.wrap(s)
charp2string.unwrap_spec = [ObjSpace, r_uint, int]
+
+def charp2rawstring(space, address, maxlength=-1):
+ if maxlength == -1:
+ return charp2string(space, address)
+ s = rffi.charpsize2str(rffi.cast(rffi.CCHARP, address), maxlength)
+ return space.wrap(s)
+charp2rawstring.unwrap_spec = [ObjSpace, r_uint, int]
Modified: pypy/dist/pypy/module/_rawffi/test/test__rawffi.py
==============================================================================
--- pypy/dist/pypy/module/_rawffi/test/test__rawffi.py (original)
+++ pypy/dist/pypy/module/_rawffi/test/test__rawffi.py Tue Jan 22 12:01:25 2008
@@ -162,6 +162,11 @@
arg2[0] = 'x'
res = char_check(arg1, arg2)
assert _rawffi.charp2string(res[0]) == 'xxxxxx'
+ assert _rawffi.charp2rawstring(res[0]) == 'xxxxxx'
+ assert _rawffi.charp2rawstring(res[0], 3) == 'xxx'
+ a = A(6, 'xx\x00\x00xx')
+ assert _rawffi.charp2string(a.buffer) == 'xx'
+ assert _rawffi.charp2rawstring(a.buffer, 4) == 'xx\x00\x00'
res.free()
arg1[0] = 'x'
arg2[0] = 'y'
More information about the Pypy-commit
mailing list