view anagram/support/myalloc.h @ 22:5581ef01f993

Regen all the AG output. This also fixes the line number output in the tools (cgbigen/helpgen/help2html), apparently because those files weren't regenerated last go.
author David A. Holland
date Mon, 13 Jun 2022 00:06:39 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * myalloc.h - memory management wrappers
 */

#ifndef MYALLOC_H
#define MYALLOC_H

//#include <malloc.h>

void  *myalloc(unsigned n);
void  *myzalloc(unsigned n, unsigned size);
void   myfree(void *ptr, const char *file, int line);
void  *myrealloc(void *p, unsigned n, const char *file, int line);
void   ptr_ng(const void *ptr, const char *file, int line);
int    ptr_ok(void *ptr);
void   size_ok(const void *ptr, unsigned, const char *file, int line);
char  *mystrdup(const char *);

#define ALLOCATE(n,type) ((type *) myalloc( (n) *sizeof(type) ) )

#define ALLOCATE_ST(p, n) (*(void **)(&p) = myalloc( (n)*sizeof(*(p)) ))

#define ZALLOCATE(n,type) ((type *) myzalloc( (n) , sizeof(type) ) )

#define ZALLOCATE_ST(p, n) (*(void **)(&p) = myzalloc( (n), sizeof(*(p)) ))

#define reallocate(a,n,type) ((type *) myrealloc((a),(n)*sizeof(type), __FILE__, __LINE__))

#define REALLOCATE_ST(p, n) (*(void **)(&p) = myrealloc((p), (n)*sizeof(*(p)) , __FILE__, __LINE__))

#define ok_ptr(p) ptr_ng(p, __FILE__, __LINE__)
#define DEALLOCATE(x) myfree(x, __FILE__, __LINE__)


#endif /* MYALLOC_H */