Travis Cross d2edcad66e Merge Phil Zimmermann's libzrtp as a FreeSWITCH library
Thanks to Phil Zimmermann for the code and for the license exception
we needed to include it.

There remains some build system integration work to be done before
this code will build properly in the FreeSWITCH tree.
2012-03-31 23:42:27 +00:00

64 lines
1.8 KiB
C

/*
* Operations on the usual buffers of bytes
*/
#ifndef BNSECURE
#define BNSECURE 1
#endif
/*
* These operations act on buffers of memory, just like malloc & free.
* One exception: it is not legal to pass a NULL pointer to lbnMemFree.
*/
#ifndef lbnMemAlloc
void *lbnMemAlloc(unsigned bytes);
#endif
#ifndef lbnMemFree
void lbnMemFree(void *ptr, unsigned bytes);
#endif
/* This wipes out a buffer of bytes if necessary needed. */
#ifndef lbnMemWipe
#if BNSECURE
void lbnMemWipe(void *ptr, unsigned bytes);
#else
#define lbnMemWipe(ptr, bytes) (void)(ptr,bytes)
#endif
#endif /* !lbnMemWipe */
/*
* lbnRealloc is NOT like realloc(); it's endian-sensitive!
* If lbnMemRealloc is #defined, lbnRealloc will be defined in terms of it.
* It is legal to pass a NULL pointer to lbnRealloc, although oldbytes
* will always be sero.
*/
#ifndef lbnRealloc
void *lbnRealloc(void *ptr, unsigned oldbytes, unsigned newbytes);
#endif
/*
* These macros are the ones actually used most often in the math library.
* They take and return pointers to the *end* of the given buffer, and
* take sizes in terms of words, not bytes.
*
* Note that LBNALLOC takes the pointer as an argument instead of returning
* the value.
*
* Note also that these macros are only useable if you have included
* lbn.h (for the BIG and BIGLITTLE macros), which this file does NOT include.
*/
#define LBNALLOC(p,type,words) BIGLITTLE( \
if ( ((p) = (type *)lbnMemAlloc((words)*sizeof*(p))) != 0) \
(p) += (words), \
(p) = (type *)lbnMemAlloc((words) * sizeof*(p)) \
)
#define LBNFREE(p,words) lbnMemFree((p) BIG(-(words)), (words) * sizeof*(p))
#define LBNREALLOC(p,old,new) \
lbnRealloc(p, (old) * sizeof*(p), (new) * sizeof*(p))
#define LBNWIPE(p,words) lbnMemWipe((p) BIG(-(words)), (words) * sizeof*(p))