Lines Matching refs:ig
991 itemgetterobject *ig;
1008 ig = PyObject_GC_New(itemgetterobject, (PyTypeObject *) state->itemgetter_type);
1009 if (ig == NULL) {
1014 ig->item = item;
1015 ig->nitems = nitems;
1016 ig->index = -1;
1023 * and fall back to the slow path, where ig->index is -1.
1028 ig->index = index;
1032 ig->vectorcall = (vectorcallfunc)itemgetter_vectorcall;
1033 PyObject_GC_Track(ig);
1034 return (PyObject *)ig;
1038 itemgetter_clear(itemgetterobject *ig)
1040 Py_CLEAR(ig->item);
1045 itemgetter_dealloc(itemgetterobject *ig)
1047 PyTypeObject *tp = Py_TYPE(ig);
1048 PyObject_GC_UnTrack(ig);
1049 (void)itemgetter_clear(ig);
1050 tp->tp_free(ig);
1055 itemgetter_traverse(itemgetterobject *ig, visitproc visit, void *arg)
1057 Py_VISIT(Py_TYPE(ig));
1058 Py_VISIT(ig->item);
1063 itemgetter_call(itemgetterobject *ig, PyObject *args, PyObject *kw)
1070 return itemgetter_call_impl(ig, PyTuple_GET_ITEM(args, 0));
1074 itemgetter_vectorcall(PyObject *ig, PyObject *const *args,
1084 return itemgetter_call_impl((itemgetterobject *)ig, args[0]);
1088 itemgetter_call_impl(itemgetterobject *ig, PyObject *obj)
1091 Py_ssize_t i, nitems=ig->nitems;
1093 if (ig->index >= 0
1095 && ig->index < PyTuple_GET_SIZE(obj))
1097 result = PyTuple_GET_ITEM(obj, ig->index);
1101 return PyObject_GetItem(obj, ig->item);
1104 assert(PyTuple_Check(ig->item));
1105 assert(PyTuple_GET_SIZE(ig->item) == nitems);
1113 item = PyTuple_GET_ITEM(ig->item, i);
1125 itemgetter_repr(itemgetterobject *ig)
1130 int status = Py_ReprEnter((PyObject *)ig);
1134 return PyUnicode_FromFormat("%s(...)", Py_TYPE(ig)->tp_name);
1137 reprfmt = ig->nitems == 1 ? "%s(%R)" : "%s%R";
1138 repr = PyUnicode_FromFormat(reprfmt, Py_TYPE(ig)->tp_name, ig->item);
1139 Py_ReprLeave((PyObject *)ig);
1144 itemgetter_reduce(itemgetterobject *ig, PyObject *Py_UNUSED(ignored))
1146 if (ig->nitems == 1)
1147 return Py_BuildValue("O(O)", Py_TYPE(ig), ig->item);
1148 return PyTuple_Pack(2, Py_TYPE(ig), ig->item);