summaryrefslogtreecommitdiff
path: root/include/kitchensink/internal/kitlist.h
blob: 85e3e3f14ec3260ab1fa3a98a1ef188aeade8796 (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
#ifndef KITLIST_H
#define KITLIST_H

#include "kitchensink/kitconfig.h"

typedef struct Kit_List Kit_List;

typedef void (*Kit_ListFreeCallback)(void*);

struct Kit_List {
    unsigned int size;
    unsigned int length;
    Kit_ListFreeCallback free_cb;
    void **data;
};

KIT_LOCAL Kit_List* Kit_CreateList(unsigned int size, Kit_ListFreeCallback free_cb);
KIT_LOCAL void Kit_DestroyList(Kit_List *list);

KIT_LOCAL void Kit_ClearList(Kit_List *list);
KIT_LOCAL void Kit_RemoveFromList(Kit_List *list, unsigned int iterator);
KIT_LOCAL void* Kit_IterateList(const Kit_List *list, unsigned int *iterator);
KIT_LOCAL int Kit_WriteList(Kit_List *list, void *ptr);
KIT_LOCAL int Kit_GetListLength(const Kit_List *list);

#endif // KITLIST_H