comparison mercurial/cext/parsers.c @ 47516:b8ffe85e399b

dirstate-entry: `merged_removed` and `from_p2_removed` properties Lets start to define and use more semantic property. These two might be a bit too low level and could be shaved off later, however this seems an improvement for now. Differential Revision: https://phab.mercurial-scm.org/D10958
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 03 Jul 2021 20:34:09 +0200
parents c94d3ff46fd5
children 28632eb3ca3e
comparison
equal deleted inserted replaced
47515:c94d3ff46fd5 47516:b8ffe85e399b
28 #endif 28 #endif
29 29
30 static const char *const versionerrortext = "Python minor version mismatch"; 30 static const char *const versionerrortext = "Python minor version mismatch";
31 31
32 static const int dirstate_v1_from_p2 = -2; 32 static const int dirstate_v1_from_p2 = -2;
33 static const int dirstate_v1_nonnormal = -1;
33 34
34 static PyObject *dict_new_presized(PyObject *self, PyObject *args) 35 static PyObject *dict_new_presized(PyObject *self, PyObject *args)
35 { 36 {
36 Py_ssize_t expected_size; 37 Py_ssize_t expected_size;
37 38
164 } else { 165 } else {
165 Py_RETURN_FALSE; 166 Py_RETURN_FALSE;
166 } 167 }
167 }; 168 };
168 169
170 static PyObject *dirstatetuple_get_merged_removed(dirstateTupleObject *self)
171 {
172 if (self->state == 'r' && self->size == dirstate_v1_nonnormal) {
173 Py_RETURN_TRUE;
174 } else {
175 Py_RETURN_FALSE;
176 }
177 };
178
169 static PyObject *dirstatetuple_get_from_p2(dirstateTupleObject *self) 179 static PyObject *dirstatetuple_get_from_p2(dirstateTupleObject *self)
170 { 180 {
171 if (self->size == dirstate_v1_from_p2) { 181 if (self->size == dirstate_v1_from_p2) {
172 Py_RETURN_TRUE; 182 Py_RETURN_TRUE;
173 } else { 183 } else {
174 Py_RETURN_FALSE; 184 Py_RETURN_FALSE;
175 } 185 }
176 }; 186 };
177 187
188 static PyObject *dirstatetuple_get_from_p2_removed(dirstateTupleObject *self)
189 {
190 if (self->state == 'r' && self->size == dirstate_v1_from_p2) {
191 Py_RETURN_TRUE;
192 } else {
193 Py_RETURN_FALSE;
194 }
195 };
196
178 static PyObject *dirstatetuple_get_removed(dirstateTupleObject *self) 197 static PyObject *dirstatetuple_get_removed(dirstateTupleObject *self)
179 { 198 {
180 if (self->state == 'r') { 199 if (self->state == 'r') {
181 Py_RETURN_TRUE; 200 Py_RETURN_TRUE;
182 } else { 201 } else {
184 } 203 }
185 }; 204 };
186 205
187 static PyGetSetDef dirstatetuple_getset[] = { 206 static PyGetSetDef dirstatetuple_getset[] = {
188 {"state", (getter)dirstatetuple_get_state, NULL, "state", NULL}, 207 {"state", (getter)dirstatetuple_get_state, NULL, "state", NULL},
208 {"merged_removed", (getter)dirstatetuple_get_merged_removed, NULL,
209 "merged_removed", NULL},
189 {"merged", (getter)dirstatetuple_get_merged, NULL, "merged", NULL}, 210 {"merged", (getter)dirstatetuple_get_merged, NULL, "merged", NULL},
211 {"from_p2_removed", (getter)dirstatetuple_get_from_p2_removed, NULL,
212 "from_p2_removed", NULL},
190 {"from_p2", (getter)dirstatetuple_get_from_p2, NULL, "from_p2", NULL}, 213 {"from_p2", (getter)dirstatetuple_get_from_p2, NULL, "from_p2", NULL},
191 {"removed", (getter)dirstatetuple_get_removed, NULL, "removed", NULL}, 214 {"removed", (getter)dirstatetuple_get_removed, NULL, "removed", NULL},
192 {NULL} /* Sentinel */ 215 {NULL} /* Sentinel */
193 }; 216 };
194 217