Thread (25 messages) flat view 25 messages, 5 authors, 2016-06-16

Re: [PATCH 09/13] refs: introduce an iterator interface

From: Michael Haggerty <hidden>
Date: 2016-06-16 02:19:43

On 06/01/2016 01:12 AM, Eric Sunshine wrote:
On Tue, May 31, 2016 at 3:59 AM, Michael Haggerty [off-list ref] wrote:
quoted
On 05/31/2016 07:29 AM, Eric Sunshine wrote:
quoted
On Mon, May 30, 2016 at 3:55 AM, Michael Haggerty [off-list ref] wrote:
quoted
+struct ref_iterator *empty_ref_iterator_begin(void);
+
+/*
+ * Return true iff ref_iterator is an empty_ref_iterator.
+ */
+int is_empty_ref_iterator(struct ref_iterator *ref_iterator);
I can see that you used this function as an optimization or
convenience in overlay_ref_iterator_begin(), but do you expect it to
be generally useful otherwise? Is it worth publishing? Do you have
other use-cases in mind?
It is only "published" within the refs module, in refs/refs-internal.h.
This header file is not meant to be used by code outside of the refs module.
Ah, I forgot about that. In that case, it's probably less of an issue.
quoted
My thinking was that it might be useful to other reference backends. The
function is pretty safe for anybody to call, though I admit that it is
not very general.

I don't have a strong feeling either way. If nobody else chimes in, I'll
remove it from the header file as you suggested. We can always add it
back if somebody needs it.
I don't feel strongly about it either.
OK then, I'll leave it as-is.
quoted
quoted
Also, can you explain why the merge iterator doesn't also perform the
optimization/convenience of checking if one iterator is an empty
iterator?
That's because the merge iterator doesn't know what its select function
will do. For example, you could imagine an "intersect" select function
that only lets through references that were in *both* sub-iterators. In
that case, your suggested "optimization" would be incorrect.
Makes sense. Thanks for explaining. I wonder if this deserves a
comment somewhere in code or commit message to make the situation
clear to a future developer who might think it a good idea to promote
the "optimization" to the merge iterator.
Good idea. I'll add a comment.
[...]
Thanks,
Michael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help