/*
* Neotonic ClearSilver Templating System
*
* This code is made available under the terms of the
* Neotonic ClearSilver License.
* http://www.neotonic.com/clearsilver/license.hdf
*
* Copyright (C) 2001 by Brandon Long
*/
#ifndef __ULIST_H_
#define __ULIST_H_ 1
#include "util/neo_err.h"
typedef struct _ulist
{
int flags;
void **items;
int num;
int max;
} ULIST;
#define ULIST_INTEGER (1<<0)
#define ULIST_FREE (1<<1)
#define ULIST_COPY (1<<2)
NEOERR * uListInit(ULIST **ul, int size, int flags);
NEOERR * uListvInit(ULIST **ul, ...);
int uListLength (ULIST *ul);
NEOERR * uListAppend (ULIST *ul, void *data);
NEOERR * uListPop (ULIST *ul, void **data);
NEOERR * uListInsert (ULIST *ul, int x, void *data);
NEOERR * uListDelete (ULIST *ul, int x, void **data);
NEOERR * uListGet (ULIST *ul, int x, void **data);
NEOERR * uListSet (ULIST *ul, int x, void *data);
NEOERR * uListReverse (ULIST *ul);
NEOERR * uListSort (ULIST *ul, int (*compareFunc)(const void*, const void*));
void *uListSearch (ULIST *ul, const void *key, int (*compareFunc)(const void *, const void*));
void *uListIn (ULIST *ul, const void *key, int (*compareFunc)(const void *, const void*));
int uListIndex (ULIST *ul, const void *key, int (*compareFunc)(const void *, const void*));
NEOERR * uListDestroy (ULIST **ul, int flags);
NEOERR * uListDestroyFunc (ULIST **ul, void (*destroyFunc)(void *));
#endif /* __ULIST_H_ */