aboutsummaryrefslogtreecommitdiff
path: root/src/PtrList.h
blob: 4081a204265c15dac3de56cdba3cd78b13d687e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#ifndef __PTRLIST_HH__
#define __PTRLIST_HH__

#include <stddef.h>

typedef enum { PLFALSE, PLTRUE } PLBOOL;

typedef struct PtrList_tag PtrList;

#ifdef __cplusplus
extern "C"
{
#endif
                                /* Creation and deletion */
PtrList *       List_New( void );
PtrList *       List_NewWithPageSize( size_t pagesize );
PtrList *       List_MakeCopy( const PtrList * other );
void            List_Delete( PtrList * );
                                /* Counts the items */
size_t          List_NumberOfItems( const PtrList * );
                                /* Item accessors */
void *          List_Item( const PtrList *, size_t index );
void            List_SetItem( PtrList *, size_t index, void * ptr );
                                /* List manipulation */
void            List_Append( PtrList *, void * item );
void            List_Insert( PtrList *, size_t index, void * item );
void *          List_RemoveItem( PtrList *, size_t index );
void            List_SwapItems( PtrList *, size_t a_index, size_t b_index );
                                /* Actions on pointer of particular value */
void            List_Remove( PtrList *, void * item );
PLBOOL          List_GetIndexOf( const PtrList *, const void * item,
                                size_t * index );
                                /* Remove all items from list */
void            List_Empty( PtrList * list );
                                /* Copy another list */
void            List_CopyList( PtrList * list, const PtrList * other );
                                /* Special freeing utility */
void            List_FreeItemsInListAndEmpty( PtrList * );
                                /* Sort and Search */
typedef int     (*ListSortComparison)( const void *, const void * );

void            List_SortAccordingTo( PtrList *, ListSortComparison );

typedef PLBOOL  (*ListCondition)( const void * );

void *          List_FirstItemSuchThat( const PtrList *, ListCondition  );
PLBOOL          List_FindFirstIndexSuchThat( const PtrList *,
                                ListCondition condition, size_t * index );
#ifdef __cplusplus
}
#endif

#endif