[pypy-svn] r51533 - pypy/dist/pypy/lib/_ctypes
fijal at codespeak.net
fijal at codespeak.net
Fri Feb 15 14:54:25 CET 2008
Author: fijal
Date: Fri Feb 15 14:54:24 2008
New Revision: 51533
Modified:
pypy/dist/pypy/lib/_ctypes/array.py
pypy/dist/pypy/lib/_ctypes/basics.py
pypy/dist/pypy/lib/_ctypes/function.py
pypy/dist/pypy/lib/_ctypes/pointer.py
pypy/dist/pypy/lib/_ctypes/structure.py
Log:
provide some comment about computing keepalive key.
Modified: pypy/dist/pypy/lib/_ctypes/array.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/array.py (original)
+++ pypy/dist/pypy/lib/_ctypes/array.py Fri Feb 15 14:54:24 2008
@@ -1,7 +1,8 @@
import _rawffi
-from _ctypes.basics import _CData, cdata_from_address, _CDataMeta, sizeof
+from _ctypes.basics import _CData, cdata_from_address, _CDataMeta, sizeof,\
+ keepalive_key
def _create_unicode(buffer, maxlength):
res = []
@@ -138,7 +139,7 @@
return
index = self._fix_index(index)
if getattr(value, '_objects', None):
- self._objects[str(index)] = value._objects
+ self._objects[keepalive_key(index)] = value._objects
value = self._type_._CData_input(value)
if not isinstance(self._type_._ffishape, tuple):
self._buffer[index] = value[0]
Modified: pypy/dist/pypy/lib/_ctypes/basics.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/basics.py (original)
+++ pypy/dist/pypy/lib/_ctypes/basics.py Fri Feb 15 14:54:24 2008
@@ -2,6 +2,8 @@
import _rawffi
import sys
+keepalive_key = str # XXX fix this when provided with test
+
class ArgumentError(Exception):
pass
Modified: pypy/dist/pypy/lib/_ctypes/function.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/function.py (original)
+++ pypy/dist/pypy/lib/_ctypes/function.py Fri Feb 15 14:54:24 2008
@@ -1,6 +1,6 @@
import types
-from _ctypes.basics import _CData, _CDataMeta, ArgumentError
+from _ctypes.basics import _CData, _CDataMeta, ArgumentError, keepalive_key
import _rawffi
class CFuncPtrType(_CDataMeta):
@@ -40,7 +40,7 @@
def __init__(self, argument=None):
self.callable = None
self.name = None
- self._objects = {'0':self}
+ self._objects = {keepalive_key(0):self}
if isinstance(argument, int):
self._buffer = _rawffi.Array('P').fromaddress(argument, 1)
# XXX finish this one, we need to be able to jump there somehow
Modified: pypy/dist/pypy/lib/_ctypes/pointer.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/pointer.py (original)
+++ pypy/dist/pypy/lib/_ctypes/pointer.py Fri Feb 15 14:54:24 2008
@@ -1,7 +1,7 @@
import _rawffi
from _ctypes.basics import _CData, _CDataMeta, cdata_from_address
-from _ctypes.basics import sizeof, byref
+from _ctypes.basics import sizeof, byref, keepalive_key
from _ctypes.array import Array, array_get_slice_params, array_slice_getitem,\
array_slice_setitem
@@ -78,7 +78,7 @@
if not isinstance(value, self._type_):
raise TypeError("expected %s instead of %s" % (
self._type_.__name__, type(value).__name__))
- self._objects = {'1':value}
+ self._objects = {keepalive_key(1):value}
value = value._buffer
self._buffer[0] = value
Modified: pypy/dist/pypy/lib/_ctypes/structure.py
==============================================================================
--- pypy/dist/pypy/lib/_ctypes/structure.py (original)
+++ pypy/dist/pypy/lib/_ctypes/structure.py Fri Feb 15 14:54:24 2008
@@ -1,6 +1,6 @@
import _rawffi
-from _ctypes.basics import _CData, _CDataMeta
+from _ctypes.basics import _CData, _CDataMeta, keepalive_key
import inspect
def round_up(size, alignment):
@@ -165,7 +165,7 @@
except KeyError:
raise AttributeError(name)
if getattr(value, '_objects', None):
- key = str(getattr(self.__class__, name).offset)
+ key = keepalive_key(getattr(self.__class__, name).offset)
self.__dict__['_objects'][key] = value._objects
value = fieldtype._CData_input(value)
self._buffer.__setattr__(name, value[0])
More information about the Pypy-commit
mailing list