MCPcopy Index your code
hub / github.com/git/git / merge_ref_iterator_begin

Function merge_ref_iterator_begin

refs/iterator.c:244–266  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242};
243
244struct ref_iterator *merge_ref_iterator_begin(
245 struct ref_iterator *iter0, struct ref_iterator *iter1,
246 ref_iterator_select_fn *select, void *cb_data)
247{
248 struct merge_ref_iterator *iter = xcalloc(1, sizeof(*iter));
249 struct ref_iterator *ref_iterator = &iter->base;
250
251 /*
252 * We can't do the same kind of is_empty_ref_iterator()-style
253 * optimization here as overlay_ref_iterator_begin() does,
254 * because we don't know the semantics of the select function.
255 * It might, for example, implement "intersect" by passing
256 * references through only if they exist in both iterators.
257 */
258
259 base_ref_iterator_init(ref_iterator, &merge_ref_iterator_vtable);
260 iter->iter0 = iter->iter0_owned = iter0;
261 iter->iter1 = iter->iter1_owned = iter1;
262 iter->select = select;
263 iter->cb_data = cb_data;
264 iter->current = NULL;
265 return ref_iterator;
266}
267
268/*
269 * A ref_iterator_select_fn that overlays the items from front on top

Calls 2

xcallocFunction · 0.85
base_ref_iterator_initFunction · 0.85

Tested by

no test coverage detected