home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR9 / WIZTOO.ZIP / CHANNEL.CPP < prev    next >
C/C++ Source or Header  |  1993-09-18  |  1KB  |  58 lines

  1. //  Module: CHANNEL.CPP
  2.  
  3. #include    <stdio.h>
  4. #include    "CHANNEL.H"
  5.  
  6. int Channel::Add (void *opReceiver)
  7. {
  8.     if (iNumInList >= MAXRECEIVERS) return (iStatus=CHANNEL_CONNECT_FAIL);
  9.     
  10.     opList[iNumInList++] = opReceiver;
  11.     
  12.     return (iStatus=(iNumInList==0) ? CHANNEL_EMPTY : CHANNEL_OK);
  13. }
  14.  
  15. int Channel::Find (void *opReceiver)
  16. {
  17.     if (iNumInList < 1) return -1;
  18.     for (int i=0; i<iNumInList; i++)
  19.         if (opList[i] == opReceiver) return i;
  20.         
  21.     return -1;                                 // -1 indicates no entry found
  22. }
  23.  
  24. void Channel::Remove (int idx)
  25. {
  26.     if (iNumInList < 1) return;                // verify that idx is a valid
  27.     if (idx < 0) return;                       // index into the current list
  28.     if (idx > iNumInList-1) return;
  29.     
  30.     for (int i=idx; i<iNumInList-1; i++)
  31.         opList[i] = opList[i+1];
  32.  
  33.     iNumInList--;
  34.             
  35.     return;
  36. }
  37.  
  38. int Channel::Delete (void *opReceiver)
  39.     int idx;
  40.     if ((idx=Find(opReceiver)) < 0) return (iStatus=CHANNEL_DISCONNECT_FAIL);
  41.     Remove(idx);
  42.     return (iStatus=(iNumInList==0) ? CHANNEL_EMPTY : CHANNEL_OK);
  43. }
  44.  
  45. void *Channel::First (void)
  46. {
  47.     if (iNumInList < 1) return NULL;
  48.     return opList[iTerate=0];
  49. }
  50.  
  51. void *Channel::Next (void)
  52. {
  53.     if (iTerate >= (iNumInList-1)) return NULL;
  54.     return opList[++iTerate];
  55. }
  56.  
  57.