Imigy?
#define INTERRUPT_test_and_run(ready,C1,C2,C3,funct) \
do \
{ if ( (C1)&(C2)&(C3) ) \
{ funct(); \
ready |= true; \
} \
} while(0)
void __interrupt() INTERRUPT_InterruptManager(void)
{
bool ready;
ready = false;
INTERRUPT_test_and_run(ready, PIE3, PIR3, _PIR3_TMR0IF_MASK, tmr0_isr);
INTERRUPT_test_and_run(ready, PIE4, PIR4, _PIR4_U1RXIF_MASK, rx_isr);
INTERRUPT_test_and_run(ready, PIE4, PIR4, _PIR4_U1TXIF_MASK, tx_isr);
if (!ready) RESET(); // unhandled interrupt
}