Hi René, On Mon, 30 Jan 2017, René Scharfe wrote: > Am 30.01.2017 um 21:48 schrieb Johannes Schindelin: > > > The commit you quoted embarrasses me, and I have no excuse for it. I > > would love to see that myswap() ugliness fixed by replacing it with a > > construct that is simpler, and generates good code even without any > > smart compiler. > > I don't see a way to do that without adding a type parameter. Exactly. And you know what? I would be very okay with that type parameter. Coccinelle [*1*] should be able to cope with that, too, mehtinks. It would be trivially "optimized" out of the box, even when compiling with Tiny C or in debug mode. And it would even allow things like this: #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. Ciao, Dscho P.S.: I am sure glad they use the French name and do not translate it to English.