From c3d3f9692d2ac91d064681621240121a9407501d Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 9 Apr 1998 17:53:59 +0000 Subject: [PATCH] Add PyObject_Not(). --- Include/abstract.h | 12 ++++++++++++ Include/object.h | 1 + Objects/object.c | 14 ++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/Include/abstract.h b/Include/abstract.h index 975c562280a..3491724e318 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 f2a83d79709..18cca9f4d41 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 0de095f7491..aa73740c99f 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