** Dieses modul ist die Memory import schnittstelle
** fuer menu... und key...
** ie. beide modulkomplexe sollten keine
** anderen als die hier exportierten alloc/free - funktionen
** verwenden.
** sobald sichergestellt ist, dass aller in diesen beiden modulen
** allozierter speicher wieder freigegeben wird, sollte
** malloc in AllocMem und free in FreeMem umgewandelt werden,
** um wenigstens einen kleineren Geschwindigkeitszuwachs zu
** erzeugen;
**
** (this is done for sure)
*/
#include "defs.h"
#define DEBUG_C
#include "debug_mem.h"
Prototype APTR AllocFunc (long, long);
Prototype void FreeFunc (APTR, long);
Prototype void DeallocFunc(char *);
Prototype char * DupFunc (char *, long);
APTR AllocFunc (long siz, long typ)
{
if (siz) {
/* --- Wir koennen jetzt AllocMem und FreeMem verwenden, nehme ich an; alle Allokationen in Menu/key... sollten jetzt bei PgmEnde wieder freigegeben werden */
/* return (malloc (siz)); */
return (AllocMem (siz, typ));
} /* if */
return (NULL);
} /* AllocFunc */
void FreeFunc (APTR mem, long siz)
{
/* --- Wir koennen jetzt AllocMem und FreeMem verwenden, nehme ich an; alle Allokationen in Menu/key... sollten jetzt bei PgmEnde wieder freigegeben werden */
if (mem) {
FreeMem (mem, siz);
/* free (mem); */
} /* if */
} /* FreeFunc */
/*
* Alle folgenden Funktionen sind
* verwendbar wie Makros;
* sie verwenden samt und sonders AllocFunc und FreeFunc,
* daher reicht es, diese beiden Functionen umzudefinieren,
* um andere memeory-routinen zu verwenden
*/
/*
* Deallociere den string str
*/
void DeallocFunc (char * str)
{
if (str) {
FreeFunc (str, strlen (str)+1);
} /* if */
} /* DeallocFunc */
/*
* Dupliziere den string str
*/
char * DupFunc (char * str, long typ)
{
char * new;
if (str && (new = AllocFunc(strlen(str)+1, typ))) {