mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
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.
This commit is contained in:
parent
e9c0358bf4
commit
77f6a65eb0
29 changed files with 489 additions and 378 deletions
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue