X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/bcb999855c5f4ba7084c71fadbc30026792d892d..36b6fecc4670f4d351cd662a6772a5a196108ceb:/man/darray.3 diff --git a/man/darray.3 b/man/darray.3 index c5d9366..8f7953c 100644 --- a/man/darray.3 +++ b/man/darray.3 @@ -19,7 +19,7 @@ .. .ie t .ds o \(bu .el .ds o o -.TH darray 3 "21 October 1999" mLib +.TH darray 3 "21 October 1999" "Straylight/Edgeware" "mLib utilities library" .SH "NAME" darray \- dense, dynamically resizing arrays .\" @DA_INIT @@ -43,6 +43,8 @@ darray \- dense, dynamically resizing arrays .\" @DA_UNSAFE_SHRINK .\" @DA_UNSLIDE .\" @DA_UNSAFE_UNSLIDE +.\" @DA_FIRST +.\" @DA_LAST .\" @DA_PUSH .\" @DA_POP .\" @DA_UNSHIFT @@ -82,6 +84,8 @@ darray \- dense, dynamically resizing arrays .BI "void DA_UNSAFE_SLIDE(" type_v " *" a ", long " n ); .BI "void DA_UNSAFE_UNSLIDE(" type_v " *" a ", long " n ); +.IB type " DA_FIRST(" type_v " *" a ); +.IB type " DA_LAST(" type_v " *" a ); .BI "void DA_PUSH(" type_v " *" a ", " type " " x ); .IB type " DA_POP(" type_v " *" a ); .BI "void DA_UNSHIFT(" type_v " *" a ", " type " " x ); @@ -94,8 +98,8 @@ darray \- dense, dynamically resizing arrays .SH "DESCRIPTION" The .B -declares a collection of types, macros and functions which implement -dynamically resizing arrays. +header file declares a collection of types, macros and functions which +implement dynamically resizing arrays. .PP The macros described here may evaluate their arguments multiple times unless otherwise specified. @@ -121,7 +125,7 @@ be used to prevent multiple declarations, e.g., .VS #ifndef FOO_V # define FOO_V - DA_DECL(foo_v, foo) + DA_DECL(foo_v, foo); #endif .VE The macro @@ -129,7 +133,7 @@ The macro is a valid static initializer for all types of dynamic arrays. For cases where this isn't appropriate, a dynamic array may be initialized using the macro -.BR DA_INIT , +.BR DA_CREATE , passing it the address of the array. .PP Arrays may be disposed of using the @@ -179,7 +183,7 @@ is the base address of the actual array. The elements are stored contiguously starting at this address. An element at index .I i may be referenced using the syntax -.BI DA( a )[ i \fR. +.BI DA( a )[ i ]\fR. .PP The number of elements in the array .I a @@ -284,7 +288,8 @@ and respectively, except that they interpret the sign of their second arguments in the opposite way. This is useful if the argument is unsigned (e.g., if it's based on -.BR DA_LEN ). There are unsafed versions of both these macros too. +.BR DA_LEN ). +There are unsafe versions of both these macros too. .SS "Stack operations" Dynamic arrays support Perl-like stack operations. Given an array (pointer) @@ -328,6 +333,13 @@ and can fail because the array is empty, in which case .B DAEXC_UFLOW is thrown. +.PP +The operations +.B DA_FIRST +and +.B DA_LAST +are lvalues referring to the first and last elements in the array +respectively. They are unsafe if the array is empty. .SS "Low-level details" This section describes low-level details of the dynamic array implementation. You should try to avoid making use of this information @@ -440,4 +452,4 @@ Reallocate the array to use the smallest amount of memory possible. .BR exc (3), .BR mLib (3). .SH "AUTHOR" -Mark Wooding, +Mark Wooding,