libiberty.h (XALLOCA, [...]): New.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Tue, 24 Jun 2008 01:42:31 +0000 (01:42 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Tue, 24 Jun 2008 01:42:31 +0000 (01:42 +0000)
* libiberty.h (XALLOCA, XDUP, XALLOCAVEC, XDUPVEC, XALLOCAVAR,
XDUPVAR, XOBNEWVEC, XOBNEWVAR): New.

From-SVN: r137058

include/ChangeLog
include/libiberty.h

index 2ace7e097eaa62d17081fff4167bbcaefa39a087..bf1af8da2cced0404f9fbc6316bc973478735e19 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * libiberty.h (XALLOCA, XDUP, XALLOCAVEC, XDUPVEC, XALLOCAVAR,
+       XDUPVAR, XOBNEWVEC, XOBNEWVAR): New.
+
 2008-03-24  Ian Lance Taylor  <iant@google.com>
 
        * sha1.h: New file, from gnulib.
index 6ea8761fcd1a1498da7f7dd1d994b07258792855..e3eca9d75cc03f41b4ffddd8a1707e15696f419f 100644 (file)
@@ -320,26 +320,34 @@ extern double physmem_available (void);
 
 /* Scalar allocators.  */
 
+#define XALLOCA(T)             ((T *) alloca (sizeof (T)))
 #define XNEW(T)                        ((T *) xmalloc (sizeof (T)))
 #define XCNEW(T)               ((T *) xcalloc (1, sizeof (T)))
+#define XDUP(T, P)             ((T *) xmemdup ((P), sizeof (T), sizeof (T)))
 #define XDELETE(P)             free ((void*) (P))
 
 /* Array allocators.  */
 
+#define XALLOCAVEC(T, N)       ((T *) alloca (sizeof (T) * (N)))
 #define XNEWVEC(T, N)          ((T *) xmalloc (sizeof (T) * (N)))
 #define XCNEWVEC(T, N)         ((T *) xcalloc ((N), sizeof (T)))
+#define XDUPVEC(T, P, N)       ((T *) xmemdup ((P), sizeof (T) * (N), sizeof (T) * (N)))
 #define XRESIZEVEC(T, P, N)    ((T *) xrealloc ((void *) (P), sizeof (T) * (N)))
 #define XDELETEVEC(P)          free ((void*) (P))
 
 /* Allocators for variable-sized structures and raw buffers.  */
 
+#define XALLOCAVAR(T, S)       ((T *) alloca ((S)))
 #define XNEWVAR(T, S)          ((T *) xmalloc ((S)))
 #define XCNEWVAR(T, S)         ((T *) xcalloc (1, (S)))
+#define XDUPVAR(T, P, S1, S2)  ((T *) xmemdup ((P), (S1), (S2)))
 #define XRESIZEVAR(T, P, S)    ((T *) xrealloc ((P), (S)))
 
 /* Type-safe obstack allocator.  */
 
 #define XOBNEW(O, T)           ((T *) obstack_alloc ((O), sizeof (T)))
+#define XOBNEWVEC(O, T, N)     ((T *) obstack_alloc ((O), sizeof (T) * (N)))
+#define XOBNEWVAR(O, T, S)     ((T *) obstack_alloc ((O), (S)))
 #define XOBFINISH(O, T)         ((T) obstack_finish ((O)))
 
 /* hex character manipulation routines */