switch (((X&1) << 1)|(Y&1)){ case 3: // do stuff (X=='A', Y==1) break; case 2: // do stuff (X=='A', Y==2) break; case 1: // do stuff (X=='B', Y==1) break; case 0: // do stuff (X=='B', Y==2) break;}
You could also use an array of function pointers and call the proper function:
void doStuff3(){ // do stuff (X=='A', Y==1)}void doStuff2(){ // do stuff (X=='A', Y==2)}void doStuff1(){ // do stuff (X=='B', Y==1)}void doStuff0(){ // do stuff (X=='B', Y==2)}typedef void (*pfv)();pfv doStuff[] = {doStuff0, doStuff1, doStuff2, doStuff3};void test(char X, int Y){ doStuff[((X&1) << 1)|(Y&1)];}
Maybe the compiler is smart enough to transfer the switch solution into something similar to the array of function pointers solution... dunno.
[Edited by - Fred304 on June 12, 2005 1:19:31 PM]