diff options
Diffstat (limited to 'src/3rdparty/autotrace/xstd.h')
-rw-r--r-- | src/3rdparty/autotrace/xstd.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/3rdparty/autotrace/xstd.h b/src/3rdparty/autotrace/xstd.h new file mode 100644 index 0000000..18e4d5b --- /dev/null +++ b/src/3rdparty/autotrace/xstd.h @@ -0,0 +1,81 @@ +/* xstd.h: Wrappers for functions in C standard library + Was: xmem, xfile */ + +/* These call the corresponding function in the standard library, and + abort if those routines fail. */ + +#ifndef XSTD_H +#define XSTD_H + +#include "types.h" +#include <assert.h> +#include <stdlib.h> + +/* + * XMEM + */ +#ifndef __cplusplus +#define XMALLOC(new_mem, size) \ +do \ + { \ + new_mem = (gpointer) malloc (size); \ + assert(new_mem); \ + } while (0) + +#define XCALLOC(new_mem, size) \ +do \ + { \ + new_mem = (gpointer) calloc (size, 1); \ + assert(new_mem); \ + } while (0) + +#define XREALLOC(old_ptr, size) \ +do \ + { \ + gpointer new_mem; \ + \ + if (old_ptr == NULL) \ + XMALLOC (new_mem, size); \ + else \ + { \ + new_mem = (gpointer) realloc (old_ptr, size); \ + assert(new_mem); \ + } \ + \ + old_ptr = new_mem; \ +} while (0) + +#else +/* Use templates if Cplusplus... */ +#define XMALLOC(new_mem, size) \ +do \ + { \ + (gpointer&)(new_mem) = (gpointer) malloc (size); \ + assert(new_mem); \ + } while (0) + +#define XCALLOC(new_mem, sizex) \ +do \ + { \ + (gpointer&)(new_mem) = (void *) calloc (sizex, 1); \ + assert(new_mem); \ + } while (0) + +#define XREALLOC(old_ptr, size) \ +do \ + { \ + gpointer new_mem; \ + \ + if (old_ptr == NULL) \ + XMALLOC (new_mem, (size)); \ + else \ + { \ + (gpointer&) new_mem = (gpointer) realloc ((old_ptr), (size)); \ + assert(new_mem); \ + } \ + \ + (gpointer&)old_ptr = new_mem; \ + } while (0) +#endif + +#endif /* Not XSTD_H */ |