3#ifndef __NUITKA_HELPER_BOOLEAN_H__
4#define __NUITKA_HELPER_BOOLEAN_H__
7#if PYTHON_VERSION >= 0x300
8#define nb_nonzero nb_bool
11NUITKA_MAY_BE_UNUSED
static int CHECK_IF_TRUE(PyObject *
object) {
14 if (
object == Py_True) {
16 }
else if (
object == Py_False ||
object == Py_None) {
21 if (Py_TYPE(
object)->tp_as_number != NULL && Py_TYPE(
object)->tp_as_number->nb_nonzero != NULL) {
22 result = (*Py_TYPE(
object)->tp_as_number->nb_nonzero)(
object);
23 }
else if (Py_TYPE(
object)->tp_as_mapping != NULL && Py_TYPE(
object)->tp_as_mapping->mp_length != NULL) {
24 result = (*Py_TYPE(
object)->tp_as_mapping->mp_length)(
object);
25 }
else if (Py_TYPE(
object)->tp_as_sequence != NULL && Py_TYPE(
object)->tp_as_sequence->sq_length != NULL) {
26 result = (*Py_TYPE(
object)->tp_as_sequence->sq_length)(
object);
33 }
else if (result == 0) {
41NUITKA_MAY_BE_UNUSED
static int CHECK_IF_FALSE(PyObject *
object) {
42 int result = CHECK_IF_TRUE(
object);
53NUITKA_MAY_BE_UNUSED
static inline PyObject *BOOL_FROM(
bool value) {
54 CHECK_OBJECT(Py_True);
55 CHECK_OBJECT(Py_False);
57 return value ? Py_True : Py_False;
63 NUITKA_BOOL_FALSE = 0,
65 NUITKA_BOOL_UNASSIGNED = 2,
66 NUITKA_BOOL_EXCEPTION = -1
69typedef enum { NUITKA_VOID_OK = 0, NUITKA_VOID_EXCEPTION = 1 } nuitka_void;