view anagram/support/myalloc.h @ 6:607e3be6bad8

Adjust to the moving target called the C++ standard. Apparently nowadays it's not allowed to define an explicit copy constructor but not an assignment operator. Consequently, defining the explicit copy constructor in terms of the implicit/automatic assignment operator for general convenience no longer works. Add assignment operators. Caution: not tested with the IBM compiler, but there's no particular reason it shouldn't work.
author David A. Holland
date Mon, 30 May 2022 23:46:22 -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 */