Leptonica 1.68
C Image Processing Library

stack.c File Reference

Implements a stack of generic pointers. More...

#include <stdio.h>
#include <stdlib.h>
#include "allheaders.h"

Go to the source code of this file.

Functions

L_STACKlstackCreate (l_int32 nalloc)
void lstackDestroy (L_STACK **plstack, l_int32 freeflag)
l_int32 lstackAdd (L_STACK *lstack, void *item)
void * lstackRemove (L_STACK *lstack)
l_int32 lstackExtendArray (L_STACK *lstack)
l_int32 lstackGetCount (L_STACK *lstack)
l_int32 lstackPrint (FILE *fp, L_STACK *lstack)

Variables

static const l_int32 INITIAL_PTR_ARRAYSIZE = 20

Detailed Description

Implements a stack of generic pointers.

    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()
         l_int32    lstackExtendArray()
         l_int32    lstackGetCount()

    Text description
         l_int32    lstackPrint()

Definition in file stack.c.


Function Documentation

L_STACK* lstackCreate ( l_int32  nalloc)

lstackCreate()

Input: nalloc (initial ptr array size; use 0 for default) Return: lstack, or null on error

Definition at line 64 of file stack.c.

References L_Stack::array, CALLOC, ERROR_PTR, INITIAL_PTR_ARRAYSIZE, L_Stack::n, L_Stack::nalloc, NULL, and PROCNAME.

Referenced by identifyWatershedBasin(), pixConnCompBB(), pixConnCompPixa(), pixCountConnComp(), and wshedApply().

void lstackDestroy ( L_STACK **  plstack,
l_int32  freeflag 
)

lstackDestroy()

Input: &lstack (<to be="" nulled>="">) freeflag (TRUE to free each remaining struct in the array) Return: void

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 104 of file stack.c.

References L_Stack::array, L_Stack::auxstack, FREE, L_WARNING, L_WARNING_INT, lstackDestroy(), lstackRemove(), L_Stack::n, NULL, and PROCNAME.

Referenced by lqueueDestroy(), lstackDestroy(), pixConnCompBB(), pixConnCompPixa(), pixCountConnComp(), and wshedApply().

l_int32 lstackAdd ( L_STACK lstack,
void *  item 
)

lstackAdd()

Input: lstack item to be added to the lstack Return: 0 if OK; 1 on error.

Definition at line 150 of file stack.c.

References L_Stack::array, ERROR_INT, lstackExtendArray(), L_Stack::n, L_Stack::nalloc, and PROCNAME.

Referenced by popFillseg(), popNewPixel(), popWSPixel(), pushFillseg(), and pushFillsegBB().

void* lstackRemove ( L_STACK lstack)

lstackRemove()

Input: lstack Return: ptr to item popped from the top of the lstack, or null if the lstack is empty or on error

Definition at line 180 of file stack.c.

References L_Stack::array, ERROR_PTR, L_Stack::n, NULL, and PROCNAME.

Referenced by lstackDestroy(), popFillseg(), pushFillseg(), pushFillsegBB(), pushNewPixel(), and pushWSPixel().

l_int32 lstackExtendArray ( L_STACK lstack)

lstackExtendArray()

Input: lstack Return: 0 if OK; 1 on error

Definition at line 206 of file stack.c.

References L_Stack::array, ERROR_INT, L_Stack::nalloc, NULL, PROCNAME, and reallocNew().

Referenced by lstackAdd().

l_int32 lstackGetCount ( L_STACK lstack)

lstackGetCount()

Input: lstack Return: count, or 0 on error

Definition at line 230 of file stack.c.

References ERROR_INT, L_Stack::n, and PROCNAME.

Referenced by pixSeedfill4(), pixSeedfill4BB(), pixSeedfill8(), pixSeedfill8BB(), pushFillseg(), pushFillsegBB(), pushNewPixel(), and pushWSPixel().

l_int32 lstackPrint ( FILE *  fp,
L_STACK lstack 
)

lstackPrint()

Input: stream lstack Return: 0 if OK; 1 on error

Definition at line 253 of file stack.c.

References L_Stack::array, ERROR_INT, L_Stack::n, L_Stack::nalloc, and PROCNAME.


Variable Documentation

const l_int32 INITIAL_PTR_ARRAYSIZE = 20 [static]

Definition at line 51 of file stack.c.

Referenced by lstackCreate().

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines