@@@ fltfmt mess
[mLib] / mem / alloc.3.in
index 28330df..a9195bd 100644 (file)
 .
 .\"--------------------------------------------------------------------------
 .TH alloc 3mLib "8 May 1999" "Straylight/Edgeware" "mLib utilities library"
-.\" @xmalloc
-.\" @xrealloc
-.\" @xstrdup
-.\" @xfree
 .\" @x_alloc
+.\" @x_allocv
+.\" @X_NEW
+.\" @X_NEWV
 .\" @x_strdup
 .\" @x_realloc
+.\" @x_reallocv
+.\" @X_RENEWV
 .\" @x_free
 .
+.\" @xmalloc
+.\" @xmallocv
+.\" @XNEW
+.\" @XNEWV
+.\" @xstrdup
+.\" @xrealloc
+.\" @xreallocv
+.\" @XRENEWV
+.\" @xfree
+.
 .\"--------------------------------------------------------------------------
 .SH NAME
 alloc \- mLib low-level memory allocation
@@ -49,13 +60,26 @@ alloc \- mLib low-level memory allocation
 .B "#include <mLib/alloc.h>"
 .PP
 .BI "void *x_alloc(arena *" a ", size_t " sz );
+.BI "void *x_allocv(arena *" a ", size_t " n ", size_t " sz );
+.BI "X_NEW(" type " *" p ", arena *" a );
+.BI "X_NEWV(" type " *" p ", arena *" a ", size_t " n );
+.BI "void *x_allocv(arena *" a ", size_t " n ", size_t " sz );
 .BI "char *x_strdup(arena *" a ", const char *" s );
 .BI "void *x_realloc(arena *" a ", void *" p ", size_t " sz ", size_t " osz );
+.ta \w'\fBvoid *x_reallocv('u
+.BI "void *x_reallocv(arena *" a ", void *" p ,
+.BI "  size_t " n ", size_t " on ", size_t " sz );
+.BI "X_RENEWV(" type " *" p ", arena *" a ", size_t " n ", size_t " on );
 .BI "void x_free(arena *" a ", void *" p );
 .PP
 .BI "void *xmalloc(size_t " sz );
-.BI "void *xrealloc(void *" p ", size_t " sz ", size_t " osz );
+.BI "void *xmallocv(size_t " n ", size_t " sz );
+.BI "XNEW(" type " *" p );
+.BI "XNEWV(" type " *" p ", size_t " n );
 .BI "char *xstrdup(const char *" s );
+.BI "void *xrealloc(void *" p ", size_t " sz ", size_t " osz );
+.BI "void *xreallocv(void *" p ", size_t " n ", size_t " on ", size_t " sz );
+.BI "XRENEWV(" type " *" p ", size_t " n ", size_t " on );
 .BI "void xfree(void *" p );
 .fi
 .
@@ -69,7 +93,9 @@ exception is raised.
 .PP
 The functions
 .BR x_alloc ,
+.BR x_allocv ,
 .BR x_realloc ,
+.BR x_reallocv ,
 .BR x_strdup
 and
 .BR x_free
@@ -87,16 +113,55 @@ releases a block.
 is supplied for orthogonality's sake: it's equivalent to calling the
 .BR A_FREE (3)
 macro.)
+The
+.B x_allocv
+and
+.B x_reallocv
+functions
+allocate space for arrays.
+They check for potential overflow before proceeding.
+.PP
+The
+.B X_NEW
+macro sets a pointer
+.I p
+to point to freshly allocated memory large enough for the type that
+.I p
+points to;
+The
+.B X_NEWV
+macro sets
+.I p
+to point to freshly allocated memory large enough for
+.I n
+elements, each of the type that
+.I p
+points to.
+The
+.B X_RENEWV
+resizes the block that
+.I p
+points to, so that it now has space for
+.I n
+elements of the appropriate type, having previously had space for
+.I on
+elements;
 .PP
 The
 .BR xmalloc ,
+.BR xmallocv ,
+.BR XNEW ,
+.BR XNEWV ,
 .BR xrealloc ,
+.BR xreallocv ,
+.BR XRENEWV ,
 .BR xstrdup
 and
 .BR xfree
 macros are provided as a convenient interface to failsafe memory
 allocation from the current arena
 .BR arena_global (3).
+.PP
 .
 .\"--------------------------------------------------------------------------
 .SH "SEE ALSO"