10#include "nuitka/prelude.h"
13Py_ssize_t Nuitka_PyMapping_Size(PyObject *mapping) {
14 CHECK_OBJECT(mapping);
16 PyMappingMethods *tp_as_mapping = Py_TYPE(mapping)->tp_as_mapping;
18 if (tp_as_mapping != NULL && tp_as_mapping->mp_length) {
19 Py_ssize_t result = tp_as_mapping->mp_length(mapping);
24 if (Py_TYPE(mapping)->tp_as_sequence && Py_TYPE(mapping)->tp_as_sequence->sq_length) {
25 SET_CURRENT_EXCEPTION_TYPE_COMPLAINT(
"%s is not a mapping", mapping);
29 SET_CURRENT_EXCEPTION_TYPE_COMPLAINT(
"object of type '%s' has no len()", mapping);