home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / wp_dtp / xdme1820.lha / XDME / mem.c < prev    next >
C/C++ Source or Header  |  1993-02-05  |  2KB  |  90 lines

  1. /*
  2. **  Dieses modul ist die Memory import schnittstelle
  3. **  fuer menu... und key...
  4. **  ie. beide modulkomplexe sollten keine
  5. **    anderen als die hier exportierten alloc/free - funktionen
  6. **    verwenden.
  7. **  sobald sichergestellt ist, dass aller in diesen beiden modulen
  8. **  allozierter speicher wieder freigegeben wird, sollte
  9. **  malloc in AllocMem und free in FreeMem umgewandelt werden,
  10. **  um wenigstens einen kleineren Geschwindigkeitszuwachs zu
  11. **  erzeugen;
  12. **
  13. **    (this is done for sure)
  14. */
  15.  
  16.  
  17. #include "defs.h"
  18.  
  19. #define  DEBUG_C
  20. #include "debug_mem.h"
  21.  
  22. Prototype APTR     AllocFunc  (long, long);
  23. Prototype void     FreeFunc   (APTR, long);
  24.  
  25. Prototype void     DeallocFunc(char *);
  26. Prototype char * DupFunc    (char *, long);
  27.  
  28.  
  29. APTR AllocFunc (long siz, long typ)
  30. {
  31.     if (siz) {
  32.     /* --- Wir koennen jetzt AllocMem und FreeMem verwenden, nehme ich an; alle Allokationen in Menu/key... sollten jetzt bei PgmEnde wieder freigegeben werden */
  33.     /* return (malloc (siz)); */
  34.     return (AllocMem (siz, typ));
  35.     } /* if */
  36.  
  37.     return (NULL);
  38. } /* AllocFunc */
  39.  
  40.  
  41. void FreeFunc (APTR mem, long siz)
  42. {
  43.     /* --- Wir koennen jetzt AllocMem und FreeMem verwenden, nehme ich an; alle Allokationen in Menu/key... sollten jetzt bei PgmEnde wieder freigegeben werden */
  44.  
  45.     if (mem) {
  46.     FreeMem (mem, siz);
  47.     /* free (mem); */
  48.     } /* if */
  49. } /* FreeFunc */
  50.  
  51.  
  52. /*
  53.  * Alle folgenden Funktionen sind
  54.  * verwendbar wie Makros;
  55.  * sie verwenden samt und sonders AllocFunc und FreeFunc,
  56.  * daher reicht es, diese beiden Functionen umzudefinieren,
  57.  * um andere memeory-routinen zu verwenden
  58.  */
  59.  
  60. /*
  61.  *  Deallociere den string str
  62.  */
  63.  
  64. void DeallocFunc (char * str)
  65. {
  66.     if (str) {
  67.     FreeFunc (str, strlen (str)+1);
  68.     } /* if */
  69. } /* DeallocFunc */
  70.  
  71.  
  72. /*
  73.  *  Dupliziere den string str
  74.  */
  75.  
  76. char * DupFunc (char * str, long typ)
  77. {
  78.     char * new;
  79.     if (str && (new = AllocFunc(strlen(str)+1, typ))) {
  80.     strcpy (new, str);
  81.     return (new);
  82.     } /* if */
  83.  
  84.     return (NULL);
  85. } /* DupFunc */
  86.  
  87.  
  88.  
  89.  
  90.