From: Andreas Ericsson Date: Tue, 06 Nov 2007 09:47:20 GMT Subject: Re: [PATCH 4/4] Implement git commit and status as a builtin commands. Message-ID: <47303828.3060106@op5.se> In-Reply-To: <20071106092648.GG4435@artemis.corp> Pierre Habouzit wrote: > On Tue, Nov 06, 2007 at 09:18:02AM +0000, Johannes Sixt wrote: >> Pierre Habouzit schrieb: >>> Btw, I'm starting to work slowly on the diff_opt_parse conversion to the >>> macro we discussed, and the need for new option parsing callbacks >>> arised, and I've created a: >>> parse_opt_mask_{or,and,xor} commands that you declare this way: >>> OPT_MASK_OR('a', "all", &mode, "...", MASK_ALL), >>> OPT_MASK_OR('i', "interactive", &mode, "...", MASK_INTERACTIVE), >>> ... >>> And if you chose MASK_ALL/INTERACTIVE/.. to be single bits, >>> if (!!all + !!interactive ... > 1) >>> becomes[0]: >>> if (mode & (mode - 1)) { >>> } >> This goes too far, IMHO. That's unnecessary cleverness/microoptimization >> at the expense of readability. > > The reason why I did that is not to be able to do mode & (mode - 1). With a macro along the lines of #define IS_MULTI_FLAGGED(x) (x & (x - 1)) at least this particular construct becomes a lot more readable. -- Andreas Ericsson andreas.ericsson@op5.se OP5 AB www.op5.se Tel: +46 8-230225 Fax: +46 8-230231