PyObject * Index_getitem(Index *self, PyObject *value) { long idx; char *path; const git_index_entry *index_entry; /* Case 1: integer */ if (PyLong_Check(value)) { idx = PyLong_AsLong(value); if (idx == -1 && PyErr_Occurred()) return NULL; if (idx < 0) { PyErr_SetObject(PyExc_ValueError, value); return NULL; } index_entry = git_index_get_byindex(self->index, (size_t)idx); /* Case 2: byte or text string */ } else { path = py_path_to_c_str(value); if (!path) return NULL; index_entry = git_index_get_bypath(self->index, path, 0); free(path); } if (!index_entry) { PyErr_SetObject(PyExc_KeyError, value); return NULL; } return wrap_index_entry(index_entry, self); }
PyObject * IndexIter_iternext(IndexIter *self) { const git_index_entry *index_entry; index_entry = git_index_get_byindex(self->owner->index, self->i); if (!index_entry) return NULL; self->i += 1; return wrap_index_entry(index_entry, self->owner); }
PyObject * Index_getitem(Index *self, PyObject *value) { int idx; git_index_entry *index_entry; idx = Index_get_position(self, value); if (idx == -1) return NULL; index_entry = git_index_get_byindex(self->index, idx); if (!index_entry) { PyErr_SetObject(PyExc_KeyError, value); return NULL; } return wrap_index_entry(index_entry, self); }