I see in docs, that I can build tuple value with int (specifying 'i'). I need to make tuple with bool, e.g. (True, 10)
. How can I make such tuple with bool (what specifier needed)?
Asked
Active
Viewed 4,350 times
12
1 Answers
19
There is no predefined format character for that conversion, but it is trivial to simulate one by inserting Py_True
or Py_False
object into the tuple, as appropriate. For example:
int i = ...;
bool b = ...;
PyObject *tuple_with_bool = Py_BuildValue("Oi", b ? Py_True: Py_False, i);
Another option is to use PyBool_FromLong to do the conversion. In that case, remember to use the N
format to account for PyBool_FromLong
returning a new reference:
PyObject *tuple_with_bool = Py_BuildValue("Ni", PyBool_FromLong(b), i);

djangodude
- 5,362
- 3
- 27
- 39

user4815162342
- 141,790
- 18
- 296
- 355
-
Weird nickname, but helped. Tks. – Prog1020 Jan 19 '14 at 19:20
-
The `Py_RETURN_FALSE` and `Py_RETURN_TRUE` macros are helpful too (they increment the refcount for you): https://docs.python.org/3/c-api/bool.html – Austin Adams Dec 04 '22 at 01:32