summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2002-04-03 22:41:51 (GMT)
committerGuido van Rossum <guido@python.org>2002-04-03 22:41:51 (GMT)
commit77f6a65eb00f005939c6c7c5d6ac0f037a0ce1bd (patch)
treee92163095e7ae548c36cea459dad87db74a413ef /Include
parente9c0358bf45bd6e0fe0b17720b41d20d618e6d9d (diff)
downloadcpython-77f6a65eb00f005939c6c7c5d6ac0f037a0ce1bd.zip
cpython-77f6a65eb00f005939c6c7c5d6ac0f037a0ce1bd.tar.gz
cpython-77f6a65eb00f005939c6c7c5d6ac0f037a0ce1bd.tar.bz2
Add the 'bool' type and its values 'False' and 'True', as described in
PEP 285. Everything described in the PEP is here, and there is even some documentation. I had to fix 12 unit tests; all but one of these were printing Boolean outcomes that changed from 0/1 to False/True. (The exception is test_unicode.py, which did a type(x) == type(y) style comparison. I could've fixed that with a single line using issubtype(x, type(y)), but instead chose to be explicit about those places where a bool is expected. Still to do: perhaps more documentation; change standard library modules to return False/True from predicates.
Diffstat (limited to 'Include')
-rw-r--r--Include/Python.h1
-rw-r--r--Include/intobject.h15
-rw-r--r--Include/object.h4
3 files changed, 3 insertions, 17 deletions
diff --git a/Include/Python.h b/Include/Python.h
index 934997f..f440a3a 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -79,6 +79,7 @@
#include "unicodeobject.h"
#include "intobject.h"
+#include "boolobject.h"
#include "longobject.h"
#include "floatobject.h"
#ifndef WITHOUT_COMPLEX
diff --git a/Include/intobject.h b/Include/intobject.h
index 2d244ec..f48894c 100644
--- a/Include/intobject.h
+++ b/Include/intobject.h
@@ -38,21 +38,6 @@ extern DL_IMPORT(PyObject *) PyInt_FromLong(long);
extern DL_IMPORT(long) PyInt_AsLong(PyObject *);
extern DL_IMPORT(long) PyInt_GetMax(void);
-
-/*
-False and True are special intobjects used by Boolean expressions.
-All values of type Boolean must point to either of these; but in
-contexts where integers are required they are integers (valued 0 and 1).
-Hope these macros don't conflict with other people's.
-
-Don't forget to apply Py_INCREF() when returning True or False!!!
-*/
-
-extern DL_IMPORT(PyIntObject) _Py_ZeroStruct, _Py_TrueStruct; /* Don't use these directly */
-
-#define Py_False ((PyObject *) &_Py_ZeroStruct)
-#define Py_True ((PyObject *) &_Py_TrueStruct)
-
/* Macro, trading safety for speed */
#define PyInt_AS_LONG(op) (((PyIntObject *)(op))->ob_ival)
diff --git a/Include/object.h b/Include/object.h
index 347f9c4..a85905f 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -531,8 +531,8 @@ extern DL_IMPORT(long) _Py_RefTotal;
#define Py_DECREF(op) \
if (--_Py_RefTotal, 0 < (--((op)->ob_refcnt))) ; \
else if (0 == (op)->ob_refcnt) _Py_Dealloc( (PyObject*)(op)); \
- else (void)fprintf( stderr, "%s:%i negative ref count %i\n", \
- __FILE__, __LINE__, (op)->ob_refcnt)
+ else ((void)fprintf( stderr, "%s:%i negative ref count %i\n", \
+ __FILE__, __LINE__, (op)->ob_refcnt), abort())
#else /* !Py_REF_DEBUG */
#ifdef COUNT_ALLOCS