diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/v10/man3/stak.3 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/v10/man3/stak.3')
| -rw-r--r-- | static/v10/man3/stak.3 | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/static/v10/man3/stak.3 b/static/v10/man3/stak.3 deleted file mode 100644 index 903443b7..00000000 --- a/static/v10/man3/stak.3 +++ /dev/null @@ -1,163 +0,0 @@ -.TH STAK 3 -.SH NAME -\fBstak\fR \- data stack storage library -.SH SYNOPSIS -.ta .75i 1.5i 2.25i 3i 3.75i 4.5i 5.25i 6i -.PP -.nf -\f5 -#include <stak.h> - -Stak_t *stakcreate(int \fIflags\fP); -Stak_t *stakinstall(Stak_t *\fIstack\fP, char *(\fIoverflow\fP)(int)); -int stakdelete(Stak_t *\fIstack\fP); -void staklink(Stak_t *\fIstack\fP) - -char *stakalloc(unsigned \fIsize\fP); -char *stakcopy(const char *\fIstring\fP); -char *stakset(char *\fIaddress\fP, unsigned \fIoffset\fP); - -char *stakseek(unsigned \fIoffset\fP); -int stakputc(int \fIc\fP); -int stakputs(const char *\fIstring\fP); -int staktell(void); -char *stakptr(unsigned \fIoffset\fP); -char *stakfreeze(unsigned \fIextra\fP); -\fR -.fi -.SH DESCRIPTION -.PP -\f5stak\fP is a package of routines designed to provide efficient -stack oriented dynamic storage. -A stack abstraction consists of an ordered list of contiguous -memory regions, called stack frames, that can hold objects of -arbitrary size. -A stack is represented by the type \f5Stak_t\fP -defined in header \f5<stak.h>\fP. -At any instant there is one active stack. -Variable size objects can be -added to the active stack -and programs can reference these objects directly with pointers. -In addition, the last object on the stack -(referred to here as the current object) -can be built incrementally. -The current object has an associated offset that determines its -current size. -While the current object is being built incrementally, -its location might -change so that it is necessary to reference the object with -relative offsets ranging from zero to the current offset of the object. -.PP -There is a preset initial active stack. -To use an additional stack, it is necessary to create it and to -install it as the active stack. -A stack is created with the \f5stakcreate\fP() function. -A \fIflags\fP argument of \f5STAK_SMALL\fP indicates that unused -space on the stack should be freed whenever this stack ceases -to be the active stack. -If successful, -\f5stakcreate\fP() returns a pointer to a stack whose reference -count is 1. -Otherwise, \f5stakcreate\fP() returns a null pointer. -The \f5staklink\fP() function increases the reference count for the -given \fIstack\fP. -The \f5stakinstall\fP() function -makes the specified \fIstack\fP the active stack and returns a pointer -to the previous active stack. -When the \fIoverflow\fP argument is not null, -it specifies a function that will -be called whenever \f5malloc\fP(3) fails while trying to grow the -stack. -The \fIoverflow\fP function will be called with the size that was passed -to \f5malloc\fP(3). -The \fIoverflow\fP function can call \f5exit\fP(3), call \f5longjmp\fP(3) -or return. -If the \f5overflow\fP function returns, -it must return a pointer to a memory region of the given size. -The default action is to write an error to standard error and to -call \f5exit\fP(2) with a non-zero exit value. -When \fIstack\fP is a null pointer, -the active stack is not changed -but the \fIoverflow\fP function for the active stack can be changed -and a pointer to the active stack is returned. -The \f5stakdelete\fP() function decrements the reference count and -frees the memory associated with -the specified stack -when the reference count is zero. -The effect of subsequent references to objects -on the stack are undefined. -.PP -The -\f5stakalloc\fP() function returns an aligned pointer to space on the -active stack that can be used to hold any object of the given \fIsize\fP. -\f5stakalloc\fP() is similar to \f5malloc\fP(3) except that individual -items returned by \f5stakalloc\fP() can not be freed. -\f5stakalloc\fP() causes the offset of the current object to be set to -zero. -.PP -The -\f5stakcopy\fP() function copies the given string onto the stack -and returns a pointer to the \fIstring\fP on the stack. -\f5stakcopy\fP() causes the offset of the current object to be set to -zero. -.PP -The \f5stakset\fP() function finds the frame containing the given -\fIaddress\fP, frees all frames that were created after the one containing -the given \fIaddress\fP, and sets the current object to the given -\fIaddress\fP. -The top of the current object is set to \fIoffset\fP bytes from -current object. -If \fIaddress\fP is not the address of an object on the -stack the result is undefined. -.PP -The remaining functions are used to build the current object incrementally. -An object that is built incrementally on the stack will -always occupy contiguous memory within a stack frame but -until \f5stakfreeze\fP() is called, -the location in memory for the object can change. -There is a current offset associated with the current object that -determines where subsequent operations apply. -Initially, this offset is zero, and the offset changes as a result -of the operations you specify. -The \f5stakseek\fP() function is used set the offset for the -current object. -The \fIoffset\fP argument to \f5stakseek\fP() specifies the new -offset for the current object. -The frame will be extended or moved -if \f5offset\fP causes the new current offset to extend beyond the -current frame. -\f5stakseek\fP() returns a pointer to the beginning of the current object. -The \f5staktell\fP() function gives the offset of the current object. -.PP -The \f5stakputc\fP() function adds a given character to the current object -on the stack. -The current offset is advanced by 1. -The \f5stakputs\fP() appends the given \fIstring\fP onto the current -object in the stack and returns the length of the string. -The current offset is advanced by the length of the string. -.PP -The \f5stakptr\fP() function converts the given \f5offset\fP -for the current object into a memory address on the stack. -This address is only valid until another stack operation is given. -The result is not defined if \fIoffset\fP exceeds the size of the current -object. -The \f5stakfreeze\fP() -function terminates the current object on the -stack and returns a pointer to the beginning of this object. -If \fIextra\fP is non-zero, \fIextra\fP bytes are added to the stack -before the current object is terminated. The first added byte will -contain zero and the contents of the remaining bytes are undefined. -.PP -.SH HISTORY -The -\f5stak\fP -interface was derived from similar routines in the KornShell code -that is used for building parse trees and carrying out expansions. -It provides an efficient mechanism for grouping dynamically allocated -objects so that they can be freed all at once rather than individually. -.SH AUTHOR - David Korn -.SH SEE ALSO -\f5exit(2)\fP -\f5longjmp(3)\fP -\f5malloc(3)\fP |
