1#define fatal(msg)  fatal3(msg, __FILE__, __LINE__)
2#define new(p)  if (((p)=malloc(sizeof(*(p))))); else fatal3("out of memory", __FILE__, __LINE__)
3#define dispose(p)  if (!(p)) ; else (free((void*)p), (p) = (void*)0)
4#define heapmax(p)  9999999
5#define newstring(s)  heap_newstring(s, __FILE__, __LINE__)
6#define newnstring(s,n)  heap_newnstring(s, n, __FILE__, __LINE__)
7#define newarray(p,n)  if (((p)=malloc((n)*sizeof(*(p))))); else fatal3("out of memory", __FILE__, __LINE__)
8#define renewarray(p,n)  if (((p)=realloc(p,(n)*sizeof(*(p))))); else fatal3("out of memory", __FILE__, __LINE__)
9extern void fatal3(const char *s, const char *file, const unsigned int line);
10extern char * heap_newstring(const char *s, const char *file, const int line);
11extern char * heap_newnstring(const char *s, const size_t n,
12         const char *file, const int line);
13