diff options
-rw-r--r-- | Include/abstract.h | 12 | ||||
-rw-r--r-- | Include/object.h | 1 | ||||
-rw-r--r-- | Objects/object.c | 14 |
3 files changed, 27 insertions, 0 deletions
diff --git a/Include/abstract.h b/Include/abstract.h index 975c562..3491724 100644 --- a/Include/abstract.h +++ b/Include/abstract.h @@ -382,6 +382,18 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ */ + /* Implemented elsewhere: + + int PyObject_Not(PyObject *o); + + Returns 0 if the object, o, is considered to be true, and + 1 otherwise. This is equivalent to the Python expression: + not o + + This function always succeeds. + + */ + PyObject *PyObject_Type Py_PROTO((PyObject *o)); /* diff --git a/Include/object.h b/Include/object.h index f2a83d7..18cca9f 100644 --- a/Include/object.h +++ b/Include/object.h @@ -271,6 +271,7 @@ extern int PyObject_SetAttr Py_PROTO((PyObject *, PyObject *, PyObject *)); extern int PyObject_HasAttr Py_PROTO((PyObject *, PyObject *)); extern long PyObject_Hash Py_PROTO((PyObject *)); extern int PyObject_IsTrue Py_PROTO((PyObject *)); +extern int PyObject_Not Py_PROTO((PyObject *)); extern int PyCallable_Check Py_PROTO((PyObject *)); extern int PyNumber_Coerce Py_PROTO((PyObject **, PyObject **)); extern int PyNumber_CoerceEx Py_PROTO((PyObject **, PyObject **)); diff --git a/Objects/object.c b/Objects/object.c index 0de095f..aa73740 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -470,6 +470,20 @@ PyObject_IsTrue(v) return res; } +/* equivalent of 'not v' + Return -1 if an error occurred */ + +int +PyObject_Not(v) + PyObject *v; +{ + int res; + res = PyObject_IsTrue(v); + if (res < 0) + return res; + return res == 0; +} + /* Coerce two numeric types to the "larger" one. Increment the reference count on each argument. Return -1 and raise an exception if no coercion is possible |