[pypy-svn] r73495 - in pypy/branch/cpython-extension/pypy/module/cpyext: . test
trundle at codespeak.net
trundle at codespeak.net
Wed Apr 7 03:47:31 CEST 2010
Author: trundle
Date: Wed Apr 7 03:47:30 2010
New Revision: 73495
Modified:
pypy/branch/cpython-extension/pypy/module/cpyext/stubs.py
pypy/branch/cpython-extension/pypy/module/cpyext/test/test_tupleobject.py
pypy/branch/cpython-extension/pypy/module/cpyext/tupleobject.py
Log:
Add PyTuple_Size.
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/stubs.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/stubs.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/stubs.py Wed Apr 7 03:47:30 2010
@@ -5519,14 +5519,6 @@
changes in your code for properly supporting 64-bit systems."""
raise NotImplementedError
- at cpython_api([PyObject], Py_ssize_t)
-def PyTuple_Size(space, p):
- """Take a pointer to a tuple object, and return the size of that tuple.
-
- This function returned an int type. This might require changes
- in your code for properly supporting 64-bit systems."""
- raise NotImplementedError
-
@cpython_api([PyObject, Py_ssize_t], PyObject, borrowed=True)
def PyTuple_GET_ITEM(space, p, pos):
"""Like PyTuple_GetItem(), but does no checking of its arguments.
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/test/test_tupleobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/test/test_tupleobject.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/test/test_tupleobject.py Wed Apr 7 03:47:30 2010
@@ -6,4 +6,8 @@
def test_tupleobject(self, space, api):
assert not api.PyTuple_Check(space.w_None)
assert api.PyTuple_SetItem(space.w_None, 0, space.w_None) == -1
+ atuple = space.newtuple([0, 1, 'yay'])
+ assert api.PyTuple_Size(atuple) == 3
+ assert api.PyTuple_GET_SIZE(atuple) == 3
+ raises(TypeError, api.PyTuple_Size(space.newlist([])))
api.PyErr_Clear()
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/tupleobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/tupleobject.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/tupleobject.py Wed Apr 7 03:47:30 2010
@@ -1,3 +1,4 @@
+from pypy.interpreter.error import OperationError
from pypy.rpython.lltypesystem import rffi, lltype
from pypy.module.cpyext.api import (cpython_api, Py_ssize_t, CANNOT_FAIL,
build_type_checkers)
@@ -38,3 +39,10 @@
assert isinstance(w_t, W_TupleObject)
return len(w_t.wrappeditems)
+ at cpython_api([PyObject], Py_ssize_t, error=-1)
+def PyTuple_Size(space, ref):
+ """Take a pointer to a tuple object, and return the size of that tuple."""
+ if not PyTuple_Check(space, ref):
+ raise OperationError(space.w_TypeError,
+ space.wrap("expected tuple object"))
+ return PyTuple_GET_SIZE(space, ref)
More information about the Pypy-commit
mailing list