From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS53758 23.128.96.0/24 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by dcvr.yhbt.net (Postfix) with ESMTP id 2CFEA1F5AE for ; Wed, 5 May 2021 13:42:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232490AbhEENnH (ORCPT ); Wed, 5 May 2021 09:43:07 -0400 Received: from cloud.peff.net ([104.130.231.41]:45266 "EHLO cloud.peff.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231959AbhEENnG (ORCPT ); Wed, 5 May 2021 09:43:06 -0400 Received: (qmail 18305 invoked by uid 109); 5 May 2021 13:42:10 -0000 Received: from Unknown (HELO peff.net) (10.0.1.2) by cloud.peff.net (qpsmtpd/0.94) with ESMTP; Wed, 05 May 2021 13:42:10 +0000 Authentication-Results: cloud.peff.net; auth=none Received: (qmail 9515 invoked by uid 111); 5 May 2021 13:42:10 -0000 Received: from coredump.intra.peff.net (HELO sigill.intra.peff.net) (10.0.0.2) by peff.net (qpsmtpd/0.94) with (TLS_AES_256_GCM_SHA384 encrypted) ESMTPS; Wed, 05 May 2021 09:42:10 -0400 Authentication-Results: peff.net; auth=none Date: Wed, 5 May 2021 09:42:09 -0400 From: Jeff King To: =?utf-8?B?w4Z2YXIgQXJuZmrDtnLDsA==?= Bjarmason Cc: git@vger.kernel.org, Junio C Hamano Subject: Re: [PATCH 2/5] streaming.c: remove enum/function/vtbl indirection Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org On Wed, May 05, 2021 at 02:33:29PM +0200, Ævar Arnfjörð Bjarmason wrote: > 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