[pypy-svn] r50867 - pypy/dist/pypy/lib/_ctypes
fijal at codespeak.net
fijal at codespeak.net
Tue Jan 22 12:52:00 CET 2008
Author: fijal
Date: Tue Jan 22 12:52:00 2008
New Revision: 50867
Added:
pypy/dist/pypy/lib/_ctypes/builtin.py (contents, props changed)
Modified:
pypy/dist/pypy/lib/_ctypes/__init__.py
pypy/dist/pypy/lib/_ctypes/dummy.py
pypy/dist/pypy/lib/_ctypes/function.py
Log:
Support for some builtin functions.
Modified: pypy/dist/pypy/lib/_ctypes/__init__.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/__init__.py (original)
+++ pypy/dist/pypy/lib/_ctypes/__init__.py Tue Jan 22 12:52:00 2008
@@ -1,7 +1,5 @@
from _ctypes.dummy import Union
from _ctypes.dummy import resize
-from _ctypes.dummy import _memmove_addr, _memset_addr, _string_at_addr
-
from _ctypes.basics import _CData, sizeof, alignment, byref, addressof,\
ArgumentError
from _ctypes.primitive import _SimpleCData
@@ -10,6 +8,7 @@
from _ctypes.dll import dlopen
from _ctypes.structure import Structure
from _ctypes.array import Array
+from _ctypes.builtin import _memmove_addr, _string_at_addr, _memset_addr
__version__ = '1.0.2'
#XXX platform dependant?
Added: pypy/dist/pypy/lib/_ctypes/builtin.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/lib/_ctypes/builtin.py Tue Jan 22 12:52:00 2008
@@ -0,0 +1,12 @@
+
+import _rawffi, sys
+
+_memmove_addr = ('memmove', 'libc.so.6')
+_memset_addr = ('memset', 'libc.so.6')
+
+def _string_at_addr(addr, lgt):
+ # address here can be almost anything
+ import ctypes
+ obj = ctypes.c_char_p._CData_input(addr)[0]
+ return _rawffi.charp2rawstring(obj, lgt)
+
Modified: pypy/dist/pypy/lib/_ctypes/dummy.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/dummy.py (original)
+++ pypy/dist/pypy/lib/_ctypes/dummy.py Tue Jan 22 12:52:00 2008
@@ -8,5 +8,4 @@
EXPLODE
resize = dummyfunc
-_memset_addr = dummyfunc
Modified: pypy/dist/pypy/lib/_ctypes/function.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/function.py (original)
+++ pypy/dist/pypy/lib/_ctypes/function.py Tue Jan 22 12:52:00 2008
@@ -29,9 +29,12 @@
def _getrestype(self):
return self._restype_
def _setrestype(self, restype):
+ if restype is int:
+ from ctypes import c_int
+ restype = c_int
if not isinstance(restype, _CDataMeta) and not restype is None:
raise TypeError("Expected ctypes type, got %s" % (restype,))
- self._restype_ = restype
+ self._restype_ = restype
restype = property(_getrestype, _setrestype)
def __init__(self, argument=None):
@@ -49,6 +52,8 @@
elif isinstance(argument, tuple) and len(argument) == 2:
import ctypes
self.name, self.dll = argument
+ if isinstance(self.dll, str):
+ self.dll = ctypes.CDLL(self.dll)
# we need to check dll anyway
self._getfuncptr([], ctypes.c_int)
elif argument is None:
More information about the Pypy-commit
mailing list