NAME

Image::Leptonica::Func::stack

VERSION

version 0.04

stack.c

stack.c

    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()

FUNCTIONS

lstackAdd

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.

lstackCreate

L_STACK * lstackCreate ( l_int32 nalloc )

lstackCreate()

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

lstackDestroy

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.

lstackGetCount

l_int32 lstackGetCount ( L_STACK *lstack )

lstackGetCount()

    Input:  lstack
    Return: count, or 0 on error

lstackPrint

l_int32 lstackPrint ( FILE *fp, L_STACK *lstack )

lstackPrint()

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

lstackRemove

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

AUTHOR

Zakariyya Mughal <zmughal@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Zakariyya Mughal.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.