From: David Howells > Sent: 21 November 2020 14:14 > > Switch to using a table of operations. In a future patch the individual > methods will be split up by type. For the moment, however, the ops tables > just jump directly to the old functions - which are now static. Inline > wrappers are provided to jump through the hooks. I was wondering if you could use a bit of 'cpp magic' so the to call sites would be: ITER_CALL(iter, action)(arg_list); which might expand to: iter->action(arg_list); in the function-table case. But could also be an if-chain: if (iter->type & foo) foo_action(args); else ... with foo_action() being inlined. If there is enough symmetry it might make the code easier to read. Although I'm not sure what happens to 'iterate_all_kinds'. OTOH that is already unreadable. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)