12

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)?

Wooble
  • 87,717
  • 12
  • 108
  • 131
Prog1020
  • 4,530
  • 8
  • 31
  • 65

1 Answers1

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