[pypy-svn] r73427 - pypy/branch/cpython-extension/pypy/module/cpyext
xoraxax at codespeak.net
xoraxax at codespeak.net
Tue Apr 6 01:33:15 CEST 2010
Author: xoraxax
Date: Tue Apr 6 01:33:14 2010
New Revision: 73427
Modified:
pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py
Log:
Implement PyType_IsSubtype.
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py Tue Apr 6 01:33:14 2010
@@ -16,7 +16,7 @@
PyVarObjectFields, Py_ssize_t, Py_TPFLAGS_READYING, generic_cpy_call, \
Py_TPFLAGS_READY, Py_TPFLAGS_HEAPTYPE, PyStringObject, ADDR, \
Py_TPFLAGS_HAVE_CLASS, METH_VARARGS, METH_KEYWORDS, \
- PyUnicodeObject
+ PyUnicodeObject, CANNOT_FAIL
from pypy.module.cpyext.pyobject import PyObject, make_ref, from_ref
from pypy.interpreter.module import Module
from pypy.interpreter.function import FunctionWithFixedCode, StaticMethod
@@ -33,6 +33,7 @@
from pypy.interpreter.error import OperationError, operationerrfmt
from pypy.rlib.rstring import rsplit
from pypy.rlib.objectmodel import we_are_translated, specialize
+from pypy.module.__builtin__.abstractinst import abstract_issubclass_w
WARN_ABOUT_MISSING_SLOT_FUNCTIONS = False
@@ -492,3 +493,12 @@
__call__ = interp2app(c_type_descr__call__, unwrap_spec=[ObjSpace, W_Root, Arguments]),
__new__ = interp2app(c_type_descr__new__),
)
+
+ at cpython_api([PyTypeObjectPtr, PyTypeObjectPtr], rffi.INT_real, error=CANNOT_FAIL)
+def PyType_IsSubtype(space, a, b):
+ """Return true if a is a subtype of b.
+ """
+ w_type1 = from_ref(space, rffi.cast(PyObject, a))
+ w_type2 = from_ref(space, rffi.cast(PyObject, b))
+ return int(abstract_issubclass_w(space, w_type1, w_type2)) #XXX correct?
+
More information about the Pypy-commit
mailing list