#include typedef struct _chanInfo { short id; } PChan; typedef struct _layerInfo { short chans; PChan *chanInfo; } PLayer; int findChannel( PLayer *layer, int chan ) { int i; int retval = -1; if ( NULL != layer ) { for ( i = 0; i < layer->chans && retval < 0; ++i ) { printf( "comparing %d vs. %d (retval = %d)\n", layer->chanInfo[i].id, chan, retval ); if ( layer->chanInfo[i].id == chan ) retval = i; } printf( "done searching: retval = %d for %d\n", retval, chan ); } return retval; } int findChannelAlsoOK( PLayer *layer, int chan ) { int i; int retval = -1; if ( NULL != layer ) { for ( i = 0; retval < 0 && i < layer->chans; ++i ) { printf( "comparing %d vs. %d (retval = %d)\n", layer->chanInfo[i].id, chan, retval ); if ( layer->chanInfo[i].id == chan ) retval = i; } printf( "done searching: retval = %d for %d\n", retval, chan ); } return retval; } int findChannelOK( PLayer *layer, int chan ) { int i; int retval = -1; if ( NULL != layer ) { for ( i = 0; i < layer->chans; ++i ) { printf( "comparing %d vs. %d (retval = %d)\n", layer->chanInfo[i].id, chan, retval ); if ( layer->chanInfo[i].id == chan ) { retval = i; break; } } printf( "done searching: retval = %d for %d\n", retval, chan ); } return retval; } int main( int argc, char *argv[] ) { int i; PLayer *layer = new PLayer; layer->chans = 4; layer->chanInfo = new PChan[ 4 ]; for ( i = 0; i < 4; ++i ) layer->chanInfo[i].id = i; printf( "retval = %d\n", findChannel( layer, 0 ) ); printf( "retval = %d\n", findChannel( layer, 1 ) ); printf( "retval = %d\n", findChannel( layer, 2 ) ); printf( "retval = %d\n", findChannel( layer, 3 ) ); printf( "\n\nShould be OK\n" ); printf( "retval = %d\n", findChannelOK( layer, 0 ) ); printf( "retval = %d\n", findChannelOK( layer, 1 ) ); printf( "retval = %d\n", findChannelOK( layer, 2 ) ); printf( "retval = %d\n", findChannelOK( layer, 3 ) ); printf( "\n\nAlso Should be OK\n" ); printf( "retval = %d\n", findChannelAlsoOK( layer, 0 ) ); printf( "retval = %d\n", findChannelAlsoOK( layer, 1 ) ); printf( "retval = %d\n", findChannelAlsoOK( layer, 2 ) ); printf( "retval = %d\n", findChannelAlsoOK( layer, 3 ) ); }