1/* Boolean object interface */
2
3#ifndef Py_BOOLOBJECT_H
4#define Py_BOOLOBJECT_H
5#ifdef __cplusplus
6extern "C" {
7#endif
8
9
10// PyBool_Type is declared by object.h
11
12#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
13
14/* Py_False and Py_True are the only two bools in existence. */
15
16/* Don't use these directly */
17PyAPI_DATA(PyLongObject) _Py_FalseStruct;
18PyAPI_DATA(PyLongObject) _Py_TrueStruct;
19
20/* Use these macros */
21#define Py_False _PyObject_CAST(&_Py_FalseStruct)
22#define Py_True _PyObject_CAST(&_Py_TrueStruct)
23
24// Test if an object is the True singleton, the same as "x is True" in Python.
25PyAPI_FUNC(int) Py_IsTrue(PyObject *x);
26#define Py_IsTrue(x) Py_Is((x), Py_True)
27
28// Test if an object is the False singleton, the same as "x is False" in Python.
29PyAPI_FUNC(int) Py_IsFalse(PyObject *x);
30#define Py_IsFalse(x) Py_Is((x), Py_False)
31
32/* Macros for returning Py_True or Py_False, respectively */
33#define Py_RETURN_TRUE return Py_True
34#define Py_RETURN_FALSE return Py_False
35
36/* Function to return a bool from a C long */
37PyAPI_FUNC(PyObject *) PyBool_FromLong(long);
38
39#ifdef __cplusplus
40}
41#endif
42#endif /* !Py_BOOLOBJECT_H */
43

source code of include/python3.12/boolobject.h