git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Yann Dirson <ydirson@altern.org>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/6] Introduce sorted-array binary-search function.
Date: Fri, 10 Dec 2010 14:29:09 -0800	[thread overview]
Message-ID: <7vwrnhb6tm.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1291848695-24601-2-git-send-email-ydirson@altern.org> (Yann Dirson's message of "Wed\,  8 Dec 2010 23\:51\:30 +0100")

Yann Dirson <ydirson@altern.org> writes:

> +Suffix meanings are as follows:
> +
> +`check`::
> +...
> +* those defining the generic algorithms

Yuck.

All of these feel way overengineered and at the same time too rigid and
brittle.

I have a suspicion that the "convenience" macros that generate many
functions and definitions are the main culprit.  For example, why do all
the functions generated by a "convenience" macro must share the same
MAYBESTATIC?  "binsearch" takes a comparison function pointer, and always
picks the midpoint, but what is the performance implication if we wanted
to use sorted-array.h to rewrite say sha1-lookup.c?  How can an API user
who wants to use declare_sorted_array_insert_checkbook() easily figure out
what other macros fromt this family can be used without getting the same
thing generated twice?  If somebody wanted to have a sorted array in a
struct, it may be tempting to use declare_sorted_array() with an empty
MAYBESTATIC inside struct's field declaration (even when the struct itself
is static---which leaves a queasy feeling, but that is a separate issue),
and the _current_ macro definition of declare_sorted_array() may allow
such a usage work perfectly fine, but how can such an API user be rest
assured it won't break in later revisions of these macros?

In addition, these macros in this patch are almost unreadable, but that
probably is mostly a fault of C's macro, not yours.

  reply	other threads:[~2010-12-10 22:29 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-08 22:51 [PATCH v6] generalizing sorted-array handling Yann Dirson
2010-12-08 22:51 ` [PATCH 1/6] Introduce sorted-array binary-search function Yann Dirson
2010-12-10 22:29   ` Junio C Hamano [this message]
2010-12-30  0:40     ` Yann Dirson
2010-12-30  1:06       ` Erik Faye-Lund
2010-12-30 10:49         ` Yann Dirson
2010-12-08 22:51 ` [PATCH 2/6] Convert diffcore-rename's rename_dst to the new sorted-array API Yann Dirson
2010-12-10 22:32   ` Junio C Hamano
2010-12-08 22:51 ` [PATCH 3/6] Convert diffcore-rename's rename_src " Yann Dirson
2010-12-08 22:51 ` [PATCH 4/6] Convert pack-objects.c " Yann Dirson
2010-12-08 22:51 ` [PATCH 5/6] Use sorted-array API for commit.c's commit_graft Yann Dirson
2010-12-08 22:51 ` [PATCH 6/6] [RFC] subvert sorted-array to replace binary-search in unpack-objects Yann Dirson
2010-12-10 23:00   ` Junio C Hamano
2010-12-10 23:22 ` [PATCH v6] generalizing sorted-array handling Junio C Hamano
2010-12-30  0:01   ` Yann Dirson
  -- strict thread matches above, loose matches on Subject: below --
2010-12-05 10:34 [PATCH v5] " Yann Dirson
2010-12-05 10:34 ` [PATCH 1/6] Introduce sorted-array binary-search function Yann Dirson
2010-11-29 22:57 [PATCH v4] generalizing sorted-array handling Yann Dirson
2010-11-29 22:57 ` [PATCH 1/6] Introduce sorted-array binary-search function Yann Dirson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vwrnhb6tm.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=ydirson@altern.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).