mirror of https://github.com/python/cpython
- Add nb_cmp slot for new style nubmers.
- Define type flag for new style numbers. - Add Py_NotImplemented.
This commit is contained in:
parent
dd038db2c2
commit
a7ed694542
|
@ -119,6 +119,11 @@ typedef int (*visitproc)(PyObject *, void *);
|
||||||
typedef int (*traverseproc)(PyObject *, visitproc, void *);
|
typedef int (*traverseproc)(PyObject *, visitproc, void *);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
/* For old style numbers all arguments are guaranteed to be of the
|
||||||
|
object's type (modulo coercion hacks that is); new style numbers
|
||||||
|
should check both arguments for proper type and implement the
|
||||||
|
necessary conversions in the slots themselves. */
|
||||||
|
|
||||||
binaryfunc nb_add;
|
binaryfunc nb_add;
|
||||||
binaryfunc nb_subtract;
|
binaryfunc nb_subtract;
|
||||||
binaryfunc nb_multiply;
|
binaryfunc nb_multiply;
|
||||||
|
@ -153,6 +158,12 @@ typedef struct {
|
||||||
binaryfunc nb_inplace_and;
|
binaryfunc nb_inplace_and;
|
||||||
binaryfunc nb_inplace_xor;
|
binaryfunc nb_inplace_xor;
|
||||||
binaryfunc nb_inplace_or;
|
binaryfunc nb_inplace_or;
|
||||||
|
|
||||||
|
/* New style number slots; these are only used the
|
||||||
|
Py_TPFLAGS_NEWSTYLENUMBER flag is set */
|
||||||
|
|
||||||
|
binaryfunc nb_cmp; /* XXX this should be richcmpfunc */
|
||||||
|
|
||||||
} PyNumberMethods;
|
} PyNumberMethods;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -322,6 +333,9 @@ given type object has a specified feature.
|
||||||
/* PySequenceMethods and PyNumberMethods contain in-place operators */
|
/* PySequenceMethods and PyNumberMethods contain in-place operators */
|
||||||
#define Py_TPFLAGS_HAVE_INPLACEOPS (1L<<3)
|
#define Py_TPFLAGS_HAVE_INPLACEOPS (1L<<3)
|
||||||
|
|
||||||
|
/* PyNumberMethods do their own coercion */
|
||||||
|
#define Py_TPFLAGS_NEWSTYLENUMBER (1L<<4)
|
||||||
|
|
||||||
#define Py_TPFLAGS_DEFAULT (Py_TPFLAGS_HAVE_GETCHARBUFFER | \
|
#define Py_TPFLAGS_DEFAULT (Py_TPFLAGS_HAVE_GETCHARBUFFER | \
|
||||||
Py_TPFLAGS_HAVE_SEQUENCE_IN | \
|
Py_TPFLAGS_HAVE_SEQUENCE_IN | \
|
||||||
Py_TPFLAGS_HAVE_INPLACEOPS)
|
Py_TPFLAGS_HAVE_INPLACEOPS)
|
||||||
|
@ -434,6 +448,14 @@ extern DL_IMPORT(PyObject) _Py_NoneStruct; /* Don't use this directly */
|
||||||
|
|
||||||
#define Py_None (&_Py_NoneStruct)
|
#define Py_None (&_Py_NoneStruct)
|
||||||
|
|
||||||
|
/*
|
||||||
|
Py_NotImplemented is a singleton used to signal that an operation is
|
||||||
|
not implemented for a given type combination.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern DL_IMPORT(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */
|
||||||
|
|
||||||
|
#define Py_NotImplemented (&_Py_NotImplementedStruct)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A common programming style in Python requires the forward declaration
|
A common programming style in Python requires the forward declaration
|
||||||
|
|
Loading…
Reference in New Issue