NAME
Image::Leptonica::Func::bytearray
VERSION
version 0.04
bytearray.c
bytearray.c
Functions for handling byte arrays, in analogy with C++ 'strings'
   Creation, copy, clone, destruction
        L_BYTEA      *l_byteaCreate()
        L_BYTEA      *l_byteaInitFromMem()
        L_BYTEA      *l_byteaInitFromFile()
        L_BYTEA      *l_byteaInitFromStream()
        L_BYTEA      *l_byteaCopy()
        L_BYTEA      *l_byteaClone()
        void          l_byteaDestroy()
   Accessors
        size_t        l_byteaGetSize()
        l_uint8      *l_byteaGetData()
        l_uint8      *l_byteaCopyData()
   Appending
        l_int32       l_byteaAppendData()
        l_int32       l_byteaAppendString()
        static l_int32  l_byteaExtendArrayToSize()
   Join/Split
        l_int32       l_byteaJoin()
        l_int32       l_byteaSplit()
   Search
        l_int32       l_byteaFindEachSequence()
   Output to file
        l_int32       l_byteaWrite()
        l_int32       l_byteaWriteStream()
The internal data array is always null-terminated, for ease of use
in the event that it is an ascii string without null bytes.
FUNCTIONS
l_byteaAppendData
l_int32 l_byteaAppendData ( L_BYTEA *ba, l_uint8 *newdata, size_t newbytes )
l_byteaAppendData()
    Input:  ba
            newdata (byte array to be appended)
            size (size of data array)
    Return: 0 if OK, 1 on error
l_byteaAppendString
l_int32 l_byteaAppendString ( L_BYTEA *ba, char *str )
l_byteaAppendString()
    Input:  ba
            str (null-terminated string to be appended)
    Return: 0 if OK, 1 on error
l_byteaCopy
L_BYTEA * l_byteaCopy ( L_BYTEA *bas, l_int32 copyflag )
l_byteaCopy()
    Input:  bas  (source lba)
            copyflag (L_COPY, L_CLONE)
    Return: clone or copy of bas, or null on error
Notes:
    (1) If cloning, up the refcount and return a ptr to @bas.
l_byteaCopyData
l_uint8 * l_byteaCopyData ( L_BYTEA *ba, size_t *psize )
l_byteaCopyData()
    Input:  ba
            &size (<returned> size of data in lba)
    Return: copy of data in use in the data array, or null on error.
Notes:
    (1) The returned data is owned by the caller.  The input @ba
        still owns the original data array.
l_byteaCreate
L_BYTEA * l_byteaCreate ( size_t nbytes )
l_byteaCreate()
    Input:  n (determines initial size of data array)
    Return: l_bytea, or null on error
Notes:
    (1) The allocated array is n + 1 bytes.  This allows room
        for null termination.
l_byteaDestroy
void l_byteaDestroy ( L_BYTEA **pba )
l_byteaDestroy()
    Input:  &ba (<will be set to null before returning>)
    Return: void
Notes:
    (1) Decrements the ref count and, if 0, destroys the lba.
    (2) Always nulls the input ptr.
    (3) If the data has been previously removed, the lba will
        have been nulled, so this will do nothing.
l_byteaFindEachSequence
l_int32 l_byteaFindEachSequence ( L_BYTEA *ba, l_uint8 *sequence, l_int32 seqlen, L_DNA **pda )
l_byteaFindEachSequence()
    Input:  ba
            sequence (subarray of bytes to find in data)
            seqlen (length of sequence, in bytes)
            &da (<return> byte positions of each occurrence of @sequence)
    Return: 0 if OK, 1 on error
l_byteaGetData
l_uint8 * l_byteaGetData ( L_BYTEA *ba, size_t *psize )
l_byteaGetData()
    Input:  ba
            &size (<returned> size of data in lba)
    Return: ptr to existing data array, or NULL on error
Notes:
    (1) The returned ptr is owned by @ba.  Do not free it!
l_byteaGetSize
size_t l_byteaGetSize ( L_BYTEA *ba )
l_byteaGetSize()
    Input:  ba
    Return: size of stored byte array, or 0 on error
l_byteaInitFromFile
L_BYTEA * l_byteaInitFromFile ( const char *fname )
l_byteaInitFromFile()
    Input:  fname
    Return: l_bytea, or null on error
l_byteaInitFromMem
L_BYTEA * l_byteaInitFromMem ( l_uint8 *data, size_t size )
l_byteaInitFromMem()
    Input:  data (to be copied to the array)
            size (amount of data)
    Return: l_bytea, or null on error
l_byteaInitFromStream
L_BYTEA * l_byteaInitFromStream ( FILE *fp )
l_byteaInitFromStream()
    Input:  stream
    Return: l_bytea, or null on error
l_byteaJoin
l_int32 l_byteaJoin ( L_BYTEA *ba1, L_BYTEA **pba2 )
l_byteaJoin()
    Input:  ba1
            &ba2 (data array is added to the one in ba1, and
                   then ba2 is destroyed)
    Return: 0 if OK, 1 on error
Notes:
    (1) It is a no-op, not an error, for @ba2 to be null.
l_byteaSplit
l_int32 l_byteaSplit ( L_BYTEA *ba1, size_t splitloc, L_BYTEA **pba2 )
l_byteaSplit()
    Input:  ba1 (lba to split; array bytes nulled beyond the split loc)
            splitloc (location in ba1 to split; ba2 begins there)
            &ba2 (<return> with data starting at splitloc)
    Return: 0 if OK, 1 on error
l_byteaWrite
l_int32 l_byteaWrite ( const char *fname, L_BYTEA *ba, size_t startloc, size_t endloc )
l_byteaWrite()
    Input:  fname (output file)
            ba
            startloc (first byte to output)
            endloc (last byte to output; use 0 to write to the
                    end of the data array)
    Return: 0 if OK, 1 on error
l_byteaWriteStream
l_int32 l_byteaWriteStream ( FILE *fp, L_BYTEA *ba, size_t startloc, size_t endloc )
l_byteaWriteStream()
    Input:  stream (opened for binary write)
            ba
            startloc (first byte to output)
            endloc (last byte to output; use 0 to write to the
                    end of the data array)
    Return: 0 if OK, 1 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.