##// END OF EJS Templates
dirstate: add a C implementation for nonnormalentries...
Laurent Charignon -
r27592:7c9eb292 default
parent child Browse files
Show More
@@ -547,6 +547,44 b' quit:'
547 }
547 }
548
548
549 /*
549 /*
550 * Build a set of non-normal entries from the dirstate dmap
551 */
552 static PyObject *nonnormalentries(PyObject *self, PyObject *args)
553 {
554 PyObject *dmap, *nonnset = NULL, *fname, *v;
555 Py_ssize_t pos;
556
557 if (!PyArg_ParseTuple(args, "O!:nonnormalentries",
558 &PyDict_Type, &dmap))
559 goto bail;
560
561 nonnset = PySet_New(NULL);
562 if (nonnset == NULL)
563 goto bail;
564
565 pos = 0;
566 while (PyDict_Next(dmap, &pos, &fname, &v)) {
567 dirstateTupleObject *t;
568 if (!dirstate_tuple_check(v)) {
569 PyErr_SetString(PyExc_TypeError,
570 "expected a dirstate tuple");
571 goto bail;
572 }
573 t = (dirstateTupleObject *)v;
574
575 if (t->state == 'n' && t->mtime != -1)
576 continue;
577 if (PySet_Add(nonnset, fname) == -1)
578 goto bail;
579 }
580
581 return nonnset;
582 bail:
583 Py_XDECREF(nonnset);
584 return NULL;
585 }
586
587 /*
550 * Efficiently pack a dirstate object into its on-disk format.
588 * Efficiently pack a dirstate object into its on-disk format.
551 */
589 */
552 static PyObject *pack_dirstate(PyObject *self, PyObject *args)
590 static PyObject *pack_dirstate(PyObject *self, PyObject *args)
@@ -2740,6 +2778,8 b' PyObject *lowerencode(PyObject *self, Py'
2740
2778
2741 static PyMethodDef methods[] = {
2779 static PyMethodDef methods[] = {
2742 {"pack_dirstate", pack_dirstate, METH_VARARGS, "pack a dirstate\n"},
2780 {"pack_dirstate", pack_dirstate, METH_VARARGS, "pack a dirstate\n"},
2781 {"nonnormalentries", nonnormalentries, METH_VARARGS,
2782 "create a set containing non-normal entries of given dirstate\n"},
2743 {"parse_manifest", parse_manifest, METH_VARARGS, "parse a manifest\n"},
2783 {"parse_manifest", parse_manifest, METH_VARARGS, "parse a manifest\n"},
2744 {"parse_dirstate", parse_dirstate, METH_VARARGS, "parse a dirstate\n"},
2784 {"parse_dirstate", parse_dirstate, METH_VARARGS, "parse a dirstate\n"},
2745 {"parse_index2", parse_index2, METH_VARARGS, "parse a revlog index\n"},
2785 {"parse_index2", parse_index2, METH_VARARGS, "parse a revlog index\n"},
General Comments 0
You need to be logged in to leave comments. Login now