[PATCH 4 of 5] lazymanifest: extract function for iterating to next line
Martin von Zweigbergk
martinvonz at google.com
Wed Mar 11 18:14:26 CDT 2015
# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1426104926 25200
# Wed Mar 11 13:15:26 2015 -0700
# Node ID d503a9f83866a27df8f88fbd8ea1297d8dfc3327
# Parent 91e8436e566b285254d11aec6dc6694ae50ff6e8
lazymanifest: extract function for iterating to next line
This will soon be reused by keys iterator.
diff -r 91e8436e566b -r d503a9f83866 mercurial/manifest.c
--- a/mercurial/manifest.c Wed Mar 11 13:35:34 2015 -0700
+++ b/mercurial/manifest.c Wed Mar 11 13:15:26 2015 -0700
@@ -222,13 +222,8 @@
PyObject_Del(self);
}
-static PyObject *lmiter_iternext(PyObject *o)
+static line *lmiter_nextline(lmIter *self)
{
- size_t pl;
- line *l;
- Py_ssize_t consumed;
- PyObject *path = NULL, *hash = NULL, *flags = NULL;
- lmIter *self = (lmIter *)o;
do {
self->pos++;
if (self->pos >= self->m->numlines) {
@@ -236,7 +231,19 @@
}
/* skip over deleted manifest entries */
} while (self->m->lines[self->pos].deleted);
- l = self->m->lines + self->pos;
+ return self->m->lines + self->pos;
+}
+
+static PyObject *lmiter_iternext(PyObject *o)
+{
+ size_t pl;
+ line *l;
+ Py_ssize_t consumed;
+ PyObject *path = NULL, *hash = NULL, *flags = NULL;
+ l = lmiter_nextline((lmIter *)o);
+ if (!l) {
+ return NULL;
+ }
pl = pathlen(l);
path = PyString_FromStringAndSize(l->start, pl);
hash = nodeof(l);
More information about the Mercurial-devel
mailing list