Re: [PATCH 1/5] add SWAP macro
From: Johannes Schindelin <hidden>
Date: 2017-02-01 11:39:27
Hi René, On Tue, 31 Jan 2017, René Scharfe wrote:
Am 31.01.2017 um 13:13 schrieb Johannes Schindelin:quoted
#define SIMPLE_SWAP(T, a, b) do { T tmp_ = a; a = b; b = tmp_; } while (0) ... uint32_t large; char nybble; ... if (!(large & ~0xf)) { SIMPLE_SWAP(char, nybble, large); ... } i.e. mixing types, when possible. And while I do not necessarily expect that we need anything like this anytime soon, merely the fact that it allows for this flexibility, while being very readable at the same time, would make it a pretty good design in my book.Such a skinny macro which only hides repetition is kind of attractive due to its simplicity; I can't say the same about the mixed type example above, though. The fat version isn't that bad either even without inlining, includes a few safety checks and doesn't require us to tell the compiler something it already knows very well. I'd rather let the machine do the work.
I am a big fan of letting the machine do the work. But I am not a big fan of *creating* work for the machine. So if you asked me what I would think of a script that, given a patch "in mbox format", automatically fixes all formatting issues that typically take up a sizable chunk of review time, I would say: yeah, let's get this done! It would probably take away some fun because then reviewers could bike-shed less, but I'd think that is a good thing. If you asked me what my opinion is about a program you wrote that gathers all the threads and sub threads of code^Wpatch reviews on the Git mailing list, and cross-references them with public Git branches, and with Junio's What's Cooking mail, and with the SHA-1s in `pu`: Great! That would relieve me of a ton of really boring and grueling work, if the machine can do it, all the better. And if you ask me about adding a complex macro that adds a bunch of work for the C compiler just to produce the same assembler code as a one-liner macro would have produced much easier, I will reply that we could maybe instead spend that time on letting the machine perform tasks that already need to be done... :-) Ciao, Dscho