home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / libraries / rtlibrary.lha / rtlibrary / src / rt / rt.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-29  |  900 b   |  51 lines

  1. /*
  2.  * $Id: rt.c $
  3.  *
  4.  * Author: Tomi Ollila <Tomi.Ollila@hut.fi>
  5.  *
  6.  *     Copyright (c) 1994 Tomi Ollila
  7.  *         All rights reserved
  8.  *
  9.  * Created: Sat Dec 24 23:56:19 1994 too
  10.  * Last modified: Mon Jan 30 01:40:37 1995 too
  11.  *
  12.  * HISTORY 
  13.  * $Log: $
  14.  */
  15.  
  16. #include <proto/exec.h>
  17. #include "rt_priv.h"
  18.  
  19. struct RT * rt_Create(int size)
  20. {
  21.   int asize = sizeof (struct RT) + size * sizeof (struct RTNode);
  22.  
  23.   struct RT * rt = (struct RT *)AllocMem(asize, 0);
  24.   rt->node = &rt->endnode;
  25.   rt->endnode.func = 0;
  26.   rt->endnode.data = (void *)asize;
  27.  
  28.   return rt;
  29. }
  30.  
  31. struct RTNode * rt_Add(struct RT * rt,  void * func, void * data)
  32. {
  33.   rt->node++;
  34.   
  35.   rt->node->func = func;
  36.   rt->node->data = data;
  37.  
  38.   return rt->node;
  39. }
  40.  
  41. void rt_Delete(struct RT * rt)
  42. {
  43.   struct RTNode * node = rt->node;
  44.  
  45.   while (node->func) {
  46.     ((f_void)node->func)(node->data);
  47.     node--;
  48.   }
  49.   FreeMem(rt, (int)rt->endnode.data);
  50. }
  51.