diff options
author | Bernardo Innocenti <bernie@gcc.gnu.org> | 2004-07-24 19:48:01 +0200 |
---|---|---|
committer | Bernardo Innocenti <bernie@gcc.gnu.org> | 2004-07-24 19:48:01 +0200 |
commit | b50a5a953bb83c9f993b75785a65164b627cff26 (patch) | |
tree | 4c504fd2a4d3f4268fba46853fbb3488c315c964 /include | |
parent | 8b66a9e980e7f7d1b73abe11bec3dfb25b1bfc81 (diff) | |
download | gcc-b50a5a953bb83c9f993b75785a65164b627cff26.zip gcc-b50a5a953bb83c9f993b75785a65164b627cff26.tar.gz gcc-b50a5a953bb83c9f993b75785a65164b627cff26.tar.bz2 |
libiberty.h (XNEW, [...]): Move here from libcpp/internal.h.
* libiberty.h (XNEW, XCNEW, XNEWVEC, XCNEWVEC, XOBNEW): Move here from
libcpp/internal.h.
(XDELETE, XRESIZEVEC, XDELETEVEC, XNEWVAR, XCNEWVAR, XRESIZEVAR): New
macros.
From-SVN: r85119
Diffstat (limited to 'include')
-rw-r--r-- | include/libiberty.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/libiberty.h b/include/libiberty.h index 5c10153..68eeeae 100644 --- a/include/libiberty.h +++ b/include/libiberty.h @@ -250,6 +250,37 @@ extern PTR xmemdup PARAMS ((const PTR, size_t, size_t)) ATTRIBUTE_MALLOC; extern double physmem_total PARAMS ((void)); extern double physmem_available PARAMS ((void)); + +/* These macros provide a K&R/C89/C++-friendly way of allocating structures + with nice encapsulation. The XDELETE*() macros are technically + superfluous, but provided here for symmetry. Using them consistently + makes it easier to update client code to use different allocators such + as new/delete and new[]/delete[]. */ + +/* Scalar allocators. */ + +#define XNEW(T) ((T *) xmalloc (sizeof (T))) +#define XCNEW(T) ((T *) xcalloc (1, sizeof (T))) +#define XDELETE(P) free ((P)) + +/* Array allocators. */ + +#define XNEWVEC(T, N) ((T *) xmalloc (sizeof (T) * (N))) +#define XCNEWVEC(T, N) ((T *) xcalloc ((N), sizeof (T))) +#define XRESIZEVEC(T, P, N) ((T *) xrealloc ((P), sizeof (T) * (N))) +#define XDELETEVEC(P) free ((P)) + +/* Allocators for variable-sized structures and raw buffers. */ + +#define XNEWVAR(T, S) ((T *) xmalloc ((S))) +#define XCNEWVAR(T, S) ((T *) xcalloc (1, (S))) +#define XRESIZEVAR(T, P, S) ((T *) xrealloc ((P), (S))) + +/* Type-safe obstack allocator. */ + +#define XOBNEW(O, T) ((T *) obstack_alloc ((O), sizeof (T))) + + /* hex character manipulation routines */ #define _hex_array_size 256 |