diff options
author | Guido van Rossum <guido@python.org> | 2006-07-27 21:53:35 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2006-07-27 21:53:35 (GMT) |
commit | 3cf5b1eef99fbd85bbd2bcd2e6223dfec92daf8b (patch) | |
tree | 310222781e7a80027e813b9e61b9b412fecc9a87 /Include | |
parent | 73e5a5b65d66f4fba9c4f626bcd6400f4a7215e6 (diff) | |
download | cpython-3cf5b1eef99fbd85bbd2bcd2e6223dfec92daf8b.zip cpython-3cf5b1eef99fbd85bbd2bcd2e6223dfec92daf8b.tar.gz cpython-3cf5b1eef99fbd85bbd2bcd2e6223dfec92daf8b.tar.bz2 |
Get rid of most of the flags (in tp_flags) that keep track of various
variations of the type struct and its attachments. In Py3k, all type
structs have to have all fields -- no binary backwards compatibility.
Had to change the complex object to a new-style number!
Diffstat (limited to 'Include')
-rw-r--r-- | Include/abstract.h | 3 | ||||
-rw-r--r-- | Include/object.h | 49 | ||||
-rw-r--r-- | Include/objimpl.h | 4 |
3 files changed, 6 insertions, 50 deletions
diff --git a/Include/abstract.h b/Include/abstract.h index d4bd588..1e69614 100644 --- a/Include/abstract.h +++ b/Include/abstract.h @@ -534,8 +534,7 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ is an iterator, this returns itself. */ #define PyIter_Check(obj) \ - (PyType_HasFeature((obj)->ob_type, Py_TPFLAGS_HAVE_ITER) && \ - (obj)->ob_type->tp_iternext != NULL) + ((obj)->ob_type->tp_iternext != NULL) PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *); /* Takes an iterator object and calls its tp_iternext slot, diff --git a/Include/object.h b/Include/object.h index cdbddfe..f8484ba 100644 --- a/Include/object.h +++ b/Include/object.h @@ -147,11 +147,7 @@ typedef int (*visitproc)(PyObject *, void *); typedef int (*traverseproc)(PyObject *, visitproc, void *); typedef struct { - /* For numbers without flag bit Py_TPFLAGS_CHECKTYPES set, all - arguments are guaranteed to be of the object's type (modulo - coercion hacks -- i.e. if the type's coercion function - returns other types, then these are allowed as well). Numbers that - have the Py_TPFLAGS_CHECKTYPES flag bit set should check *both* + /* Number implementations should check *both* arguments for proper type and implement the necessary conversions in the slot functions themselves. */ @@ -444,7 +440,9 @@ Arbitration of the flag bit positions will need to be coordinated among all extension writers who publically release their extensions (this will be fewer than you might expect!).. -Python 1.5.2 introduced the bf_getcharbuffer slot into PyBufferProcs. +Most flags were removed as of Python 3.0 to make room for new flags. (Some +flags are not for backwards compatibility but to indicate the presence of an +optional feature; these flags remain of course.) Type definitions should use Py_TPFLAGS_DEFAULT for their tp_flags value. @@ -452,34 +450,6 @@ Code can use PyType_HasFeature(type_ob, flag_value) to test whether the given type object has a specified feature. */ -/* PyBufferProcs contains bf_getcharbuffer */ -#define Py_TPFLAGS_HAVE_GETCHARBUFFER (1L<<0) - -/* PySequenceMethods contains sq_contains */ -#define Py_TPFLAGS_HAVE_SEQUENCE_IN (1L<<1) - -/* This is here for backwards compatibility. Extensions that use the old GC - * API will still compile but the objects will not be tracked by the GC. */ -#define Py_TPFLAGS_GC 0 /* used to be (1L<<2) */ - -/* PySequenceMethods and PyNumberMethods contain in-place operators */ -#define Py_TPFLAGS_HAVE_INPLACEOPS (1L<<3) - -/* PyNumberMethods do their own coercion */ -#define Py_TPFLAGS_CHECKTYPES (1L<<4) - -/* tp_richcompare is defined */ -#define Py_TPFLAGS_HAVE_RICHCOMPARE (1L<<5) - -/* Objects which are weakly referencable if their tp_weaklistoffset is >0 */ -#define Py_TPFLAGS_HAVE_WEAKREFS (1L<<6) - -/* tp_iter is defined */ -#define Py_TPFLAGS_HAVE_ITER (1L<<7) - -/* New members introduced by Python 2.2 exist */ -#define Py_TPFLAGS_HAVE_CLASS (1L<<8) - /* Set if the type object is dynamically allocated */ #define Py_TPFLAGS_HEAPTYPE (1L<<9) @@ -502,19 +472,8 @@ given type object has a specified feature. #define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0 #endif -/* Objects support nb_index in PyNumberMethods */ -#define Py_TPFLAGS_HAVE_INDEX (1L<<17) - #define Py_TPFLAGS_DEFAULT ( \ - Py_TPFLAGS_HAVE_GETCHARBUFFER | \ - Py_TPFLAGS_HAVE_SEQUENCE_IN | \ - Py_TPFLAGS_HAVE_INPLACEOPS | \ - Py_TPFLAGS_HAVE_RICHCOMPARE | \ - Py_TPFLAGS_HAVE_WEAKREFS | \ - Py_TPFLAGS_HAVE_ITER | \ - Py_TPFLAGS_HAVE_CLASS | \ Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \ - Py_TPFLAGS_HAVE_INDEX | \ 0) #define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0) diff --git a/Include/objimpl.h b/Include/objimpl.h index 03b6a8d..c6cb2fa 100644 --- a/Include/objimpl.h +++ b/Include/objimpl.h @@ -323,9 +323,7 @@ PyAPI_FUNC(void) PyObject_GC_Del(void *); /* Test if a type supports weak references */ -#define PyType_SUPPORTS_WEAKREFS(t) \ - (PyType_HasFeature((t), Py_TPFLAGS_HAVE_WEAKREFS) \ - && ((t)->tp_weaklistoffset > 0)) +#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0) #define PyObject_GET_WEAKREFS_LISTPTR(o) \ ((PyObject **) (((char *) (o)) + (o)->ob_type->tp_weaklistoffset)) |