|
|
|
@ -3,10 +3,12 @@ |
|
|
|
|
|
|
|
#include <stddef.h> |
|
|
|
|
|
|
|
#define TMALLOC(t,n) (t*) tmalloc(sizeof(t) * (size_t)(n)) |
|
|
|
#define TREALLOC(t,p,n) (t*) trealloc(p, sizeof(t) * (size_t)(n)) |
|
|
|
#define TMALLOC(t, n) (t*) tmalloc(sizeof(t) * (size_t)(n)) |
|
|
|
#define TREALLOC(t, p, n) (t*) trealloc(p, sizeof(t) * (size_t)(n)) |
|
|
|
|
|
|
|
|
|
|
|
#ifndef HAVE_LIBGC |
|
|
|
|
|
|
|
extern void *tmalloc(size_t num); |
|
|
|
extern void *trealloc(void *str, size_t num); |
|
|
|
extern void txfree(void *ptr); |
|
|
|
@ -14,47 +16,54 @@ extern void txfree(void *ptr); |
|
|
|
#define tfree(x) (txfree(x), (x) = 0) |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
#include <gc/gc.h> |
|
|
|
|
|
|
|
#define tmalloc(m) GC_malloc(m) |
|
|
|
#define trealloc(m,n) GC_realloc((m),(n)) |
|
|
|
#define tmalloc(m) GC_malloc(m) |
|
|
|
#define trealloc(m, n) GC_realloc((m), (n)) |
|
|
|
#define tfree(m) |
|
|
|
#define txfree(m) |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif /* HAVE_LIBGC */ |
|
|
|
|
|
|
|
|
|
|
|
#include "ngspice/stringutil.h" /* va: spice3 internally bzero */ |
|
|
|
|
|
|
|
#define alloc(TYPE) TMALLOC(TYPE, 1) |
|
|
|
#define MALLOC(x) tmalloc((size_t)(x)) |
|
|
|
#define FREE(x) {if(x) { txfree(x); (x) = 0; }} |
|
|
|
#define REALLOC(x,y) trealloc(x, (size_t)(y)) |
|
|
|
#define ZERO(PTR,TYPE) bzero(PTR, sizeof(TYPE)) |
|
|
|
#define alloc(TYPE) TMALLOC(TYPE, 1) |
|
|
|
#define MALLOC(x) tmalloc((size_t) (x)) |
|
|
|
#define FREE(x) do { if(x) { txfree(x); (x) = NULL; } } while(0) |
|
|
|
#define REALLOC(x, y) trealloc(x, (size_t) (y)) |
|
|
|
#define ZERO(PTR, TYPE) bzero(PTR, sizeof(TYPE)) |
|
|
|
|
|
|
|
|
|
|
|
#if defined(_MSC_VER) || defined(__MINGW32__) |
|
|
|
void * hrealloc(void *ptr, size_t num); |
|
|
|
void *hrealloc(void *ptr, size_t num); |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#ifdef CIDER |
|
|
|
|
|
|
|
#define RALLOC(ptr,type,number) \ |
|
|
|
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) { \ |
|
|
|
return(E_NOMEM); \ |
|
|
|
} |
|
|
|
|
|
|
|
#define XALLOC(ptr,type,number) \ |
|
|
|
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) { \ |
|
|
|
SPfrontEnd->IFerror( E_PANIC, "Out of Memory", NIL(IFuid) ); \ |
|
|
|
exit( 1 ); \ |
|
|
|
} |
|
|
|
|
|
|
|
#define XCALLOC(ptr,type,number) \ |
|
|
|
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) { \ |
|
|
|
fprintf( stderr, "Out of Memory\n" ); \ |
|
|
|
exit( 1 ); \ |
|
|
|
} |
|
|
|
#define RALLOC(ptr, type, number) \ |
|
|
|
do { \ |
|
|
|
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) \ |
|
|
|
return E_NOMEM; \ |
|
|
|
} while(0) |
|
|
|
|
|
|
|
#define XALLOC(ptr, type, number) \ |
|
|
|
do { \ |
|
|
|
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) { \ |
|
|
|
SPfrontEnd->IFerror(E_PANIC, "Out of Memory", NULL); \ |
|
|
|
exit(1); \ |
|
|
|
} \ |
|
|
|
} while(0) |
|
|
|
|
|
|
|
#define XCALLOC(ptr, type, number) \ |
|
|
|
do { \ |
|
|
|
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) { \ |
|
|
|
fprintf(stderr, "Out of Memory\n"); \ |
|
|
|
exit(1); \ |
|
|
|
} \ |
|
|
|
} while(0) |
|
|
|
|
|
|
|
#endif /* CIDER */ |
|
|
|
|
|
|
|
|