git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/5] streaming.c: remove enum/function/vtbl indirection

From
Jeff King <peff@peff.net>
Date
May 5, 2021, 13:42 UTC
Message-ID
<YJKgsfJXMsR47CkW@coredump.intra.peff.net>
In-Reply-To
<patch-2.5-13061f01212-20210505T122816Z-avarab@gmail.com>
On Wed, May 05, 2021 at 02:33:29PM +0200, Ævar Arnfjörð Bjarmason wrote:
Show 16 quoted lines
> Remove the indirection of discovering a function pointer to use via an
> enum and virtual table. This refactors code added in
> 46bf043807c (streaming: a new API to read from the object store,
> 2011-05-11).
> 
> We can instead simply return an "open_istream_fn" for use from the
> "istream_source()" selector function directly. This allows us to get
> rid of the "incore", "loose" and "pack_non_delta" enum
> variables. We'll return the functions instead.
> 
> The "stream_error" variable in that enum can likewise go in favor of
> returning NULL, which is what the open_istream() was doing when it got
> that value anyway.
> 
> We can thus remove the entire enum, and the "open_istream_tbl" virtual
> table that (indirectly) referenced it.

Yeah, I think this is simpler. The value of the vtable was that we might have added more functions to it, but we haven't done so over the course of the last 10 years. And I have trouble imagining for what purpose we would. So it seems like unnecessary complexity.

-Peff
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 6 of 12 in “streaming.c: refactor for smaller + easier to understand code”
  1. 0/5 streaming.c: refactor for smaller + easier to understand codeÆvar Arnfjörð Bjarmason, May 5, 2021
  2. 1/5 streaming.c: avoid forward declarationsÆvar Arnfjörð Bjarmason, May 5, 2021
  3. 3/5 streaming.c: remove {open,close,read}_method_decl() macrosÆvar Arnfjörð Bjarmason, May 5, 2021
  4. Jeff KingMay 5, 2021
  5. 2/5 streaming.c: remove enum/function/vtbl indirectionÆvar Arnfjörð Bjarmason, May 5, 2021
  6. Jeff KingMay 5, 2021
  7. Junio C HamanoMay 6, 2021
  8. 5/5 streaming.c: move {open,close,read} from vtable to "struct git_istream"Ævar Arnfjörð Bjarmason, May 5, 2021
  9. Jeff KingMay 5, 2021
  10. 4/5 streaming.c: stop passing around "object_info *" to open()Ævar Arnfjörð Bjarmason, May 5, 2021
  11. Jeff KingMay 5, 2021
  12. Jeff KingMay 5, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.