![]() |
Leptonica
1.82.0
Image processing and image analysis suite
|
#include "allheaders.h"
Go to the source code of this file.
Functions | |
static l_int32 | lstackExtendArray (L_STACK *lstack) |
L_STACK * | lstackCreate (l_int32 n) |
void | lstackDestroy (L_STACK **plstack, l_int32 freeflag) |
l_ok | lstackAdd (L_STACK *lstack, void *item) |
void * | lstackRemove (L_STACK *lstack) |
l_int32 | lstackGetCount (L_STACK *lstack) |
l_ok | lstackPrint (FILE *fp, L_STACK *lstack) |
Variables | |
static const l_uint32 | MaxPtrArraySize = 100000 |
static const l_int32 | InitialPtrArraySize = 20 |
Generic stack
The lstack is an array of void * ptrs, onto which objects can be stored. At any time, the number of stored objects is lstack->n. The object at the bottom of the lstack is at array[0]; the object at the top of the lstack is at array[n-1]. New objects are added to the top of the lstack; i.e., the first available location, which is at array[n]. The lstack is expanded by doubling, when needed. Objects are removed from the top of the lstack. When an attempt is made to remove an object from an empty lstack, the result is null.
Create/Destroy L_STACK *lstackCreate() void lstackDestroy()
Accessors l_int32 lstackAdd() void *lstackRemove() static l_int32 lstackExtendArray() l_int32 lstackGetCount()
Text description l_int32 lstackPrint()
Definition in file stack.c.
l_ok lstackAdd | ( | L_STACK * | lstack, |
void * | item | ||
) |
[in] | lstack | |
[in] | item | to be added to the lstack |
Definition at line 170 of file stack.c.
References L_Stack::array, lstackExtendArray(), L_Stack::n, and L_Stack::nalloc.
Referenced by popFillseg(), pushFillseg(), and pushFillsegBB().
L_STACK* lstackCreate | ( | l_int32 | n | ) |
[in] | n | initial ptr array size; use 0 for default |
Definition at line 82 of file stack.c.
Referenced by identifyWatershedBasin(), and wshedApply().
void lstackDestroy | ( | L_STACK ** | plstack, |
l_int32 | freeflag | ||
) |
[in,out] | plstack | will be set to null before returning |
[in] | freeflag | TRUE to free each remaining struct in the array |
Notes: (1) If freeflag is TRUE, frees each struct in the array. (2) If freeflag is FALSE but there are elements on the array, gives a warning and destroys the array. This will cause a memory leak of all the items that were on the lstack. So if the items require their own destroy function, they must be destroyed before the lstack. (3) To destroy the lstack, we destroy the ptr array, then the lstack, and then null the contents of the input ptr.
Definition at line 124 of file stack.c.
References L_Stack::array, L_Stack::auxstack, lstackRemove(), and L_Stack::n.
Referenced by lqueueDestroy().
|
static |
[in] | lstack |
Definition at line 228 of file stack.c.
References L_Stack::array, L_Stack::nalloc, and reallocNew().
Referenced by lstackAdd().
l_int32 lstackGetCount | ( | L_STACK * | lstack | ) |
[in] | lstack |
Definition at line 252 of file stack.c.
References L_Stack::n.
Referenced by pushFillseg(), and pushFillsegBB().
l_ok lstackPrint | ( | FILE * | fp, |
L_STACK * | lstack | ||
) |
[in] | fp | file stream |
[in] | lstack |
Definition at line 275 of file stack.c.
References L_Stack::array, L_Stack::n, and L_Stack::nalloc.
void* lstackRemove | ( | L_STACK * | lstack | ) |
[in] | lstack |
Definition at line 202 of file stack.c.
References L_Stack::array, and L_Stack::n.
Referenced by lstackDestroy(), popFillseg(), pushFillseg(), and pushFillsegBB().