summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/autotrace/xstd.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/3rdparty/autotrace/xstd.h81
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 */