On Wed, May 05, 2021 at 02:33:32PM +0200, Ævar Arnfjörð Bjarmason wrote: > Move the definition of the structure around the open/close/read > functions introduced in 46bf043807c (streaming: a new API to read from > the object store, 2011-05-11) to instead populate "close" and "read" > members in the "struct git_istream". > > This gets us rid of an extra pointer deference, and I think makes more > sense. The "close" and "read" functions are the primary interface to > the stream itself. > > Let's also populate a "open" callback in the same struct. That's now > used by open_istream() after istream_source() decides what "open" > function should be used. This isn't needed to get rid of the > "stream_vtbl" variables, but makes sense for consistency. Yeah, I think if we are going to get rid of the open vtable in an earlier patch, it makes sense to go all the way here and make things consistent. If we had a bunch of these objects, having the layer of indirection to the vtable would save us some per-object memory. But we really only ever have one of these open at a time. -Peff