/*********************************************************************/
/***    Copyright (c) Robert J. Vanderbei, 1994                    ***/
/***    All Rights Reserved                                        ***/
/*********************************************************************/

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <malloc.h>

#define	MALLOC(name,len,type) {	\
	if ( ( (name) = (type *)malloc( (len) * sizeof(type) ) ) == NULL \
		&& (len)>0) { \
	    printf( "MALLOC(" #name "," #len "=%d," #type ")" \
		  ": cannot allocate space", len); \
	    exit(1); \
	} \
}

#define	CALLOC(name,len,type) { \
	int i; \
	if ( ( (name) = (type *)calloc( (len) , sizeof(type) ) ) == NULL \
	        && (len)>0) { \
	    printf( "CALLOC(" #name "," #len "=%d," #type ")" \
		  ": cannot allocate space", len); \
	    exit(1); \
	} \
	for (i=0; i<(len); i++) name[i] = 0; \
}

#define	REALLOC(name,len,type) { \
	if (((name) = (type *)realloc( (name), (len)*sizeof(type) )) == NULL \
	       && (len)>0) { \
	    printf( "REALLOC(" #name "," #len "=%d," #type ")" \
		  ": cannot reallocate space", len); \
	    exit(1); \
	} \
}

#define	FREE(name) { \
	if ( (name) != NULL ) free( (name) ); \
	(name) = NULL; \
}
