Marc Nieper-Wißkirchen wrote: > > > /* Return an independent copy of ITER that is initially in the same > > > state. */ > > > extern Hamt_iterator *hamt_iterator_copy (Hamt_iterator *iter); > > > > Then a copy function is not needed, because the user's program can do > > > > Hamt_iterator iter_clone = iter; > > The hamt itself has to be copied (to increase the reference counter).
Then the comment should clarify what "independent" means. I thought it means that both iterators (the original one and the copy) can be used simultaneously, as long as the HAMT does not change. Do you mean something broader? - If someone creates a derivative of the HAMT, the iterator won't be affected, right? ("persistence") - If someone makes destructive modifications to the HAMT (through the *_x functions), the iterator will be affected if it has not yet passed the point of modification, right? So, what is the scenario where increasing the reference count will make a difference? Bruno