You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/modules_k/mi_xmlrpc/abyss_data.h

125 lines
2.3 KiB

#ifndef DATA_H_INCLUDED
#define DATA_H_INCLUDED
#include "abyss_thread.h"
/*********************************************************************
** List
*********************************************************************/
typedef struct {
void **item;
uint16_t size;
uint16_t maxsize;
abyss_bool autofree;
} TList;
void
ListInit(TList * const listP);
void
ListInitAutoFree(TList * const listP);
void
ListFree(TList * const listP);
void
ListFreeItems(TList * const listP);
abyss_bool
ListAdd(TList * const listP,
void * const str);
void
ListRemove(TList * const listP);
abyss_bool
ListAddFromString(TList * const listP,
const char * const c);
abyss_bool
ListFindString(TList * const listP,
const char * const str,
uint16_t * const indexP);
typedef struct
{
char *name,*value;
uint16_t hash;
} TTableItem;
typedef struct
{
TTableItem *item;
uint16_t size,maxsize;
} TTable;
void
TableInit(TTable * const t);
void
TableFree(TTable * const t);
abyss_bool
TableAdd(TTable * const t,
const char * const name,
const char * const value);
abyss_bool
TableAddReplace(TTable * const t,
const char * const name,
const char * const value);
abyss_bool
TableFindIndex(TTable * const t,
const char * const name,
uint16_t * const index);
char *
TableFind(TTable * const t,
const char * const name);
/*********************************************************************
** Pool
*********************************************************************/
typedef struct _TPoolZone {
char * pos;
char * maxpos;
struct _TPoolZone * next;
struct _TPoolZone * prev;
/* char data[0]; Some compilers don't accept this */
char data[1];
} TPoolZone;
typedef struct {
TPoolZone * firstzone;
TPoolZone * currentzone;
uint32_t zonesize;
TMutex mutex;
} TPool;
abyss_bool
PoolCreate(TPool * const poolP,
uint32_t const zonesize);
void
PoolFree(TPool * const poolP);
void *
PoolAlloc(TPool * const poolP,
uint32_t const size);
void
PoolReturn(TPool * const poolP,
void * const blockP);
const char *
PoolStrdup(TPool * const poolP,
const char * const origString);
#endif