| 87 | } // namespace detail |
| 88 | |
| 89 | bool PySequenceCheck(PyObject* obj, const std::function<bool(PyObject*)>& item_check) { |
| 90 | bool is_tuple = PyTuple_Check(obj); |
| 91 | if (!is_tuple && !PyList_Check(obj)) { return false; } |
| 92 | size_t size = is_tuple ? PyTuple_GET_SIZE(obj) : PyList_GET_SIZE(obj); |
| 93 | if (size == 0) { return true; } |
| 94 | PyObject* item = is_tuple ? PyTuple_GET_ITEM(obj, 0) : PyList_GET_ITEM(obj, 0); |
| 95 | return item_check(item); |
| 96 | } |
| 97 | |
| 98 | bool PyLongSequenceCheck(PyObject* obj) { |
| 99 | return PySequenceCheck( |
no outgoing calls
no test coverage detected