d93c55434562000bff3fdabdb7779094f3d79e20
[ossec-hids.git] / src / headers / list_op.h
1 /* @(#) $Id$ */
2
3 /* Copyright (C) 2009 Trend Micro Inc.
4  * All right reserved.
5  *
6  * This program is a free software; you can redistribute it
7  * and/or modify it under the terms of the GNU General Public
8  * License (version 2) as published by the FSF - Free Software
9  * Foundation
10  */
11
12 /* Common list API */
13
14
15 #ifndef _OS_LIST
16 #define _OS_LIST
17
18 typedef struct _OSListNode
19 {
20     struct _OSListNode *next;
21     struct _OSListNode *prev;
22     void *data;
23 }OSListNode;
24
25
26 typedef struct _OSList
27 {
28     OSListNode *first_node;
29     OSListNode *last_node;
30     OSListNode *cur_node;
31     
32     int currently_size;
33     int max_size;
34
35     void (*free_data_function)(void *data);
36 }OSList;
37
38
39 OSList *OSList_Create();
40
41 int OSList_SetMaxSize(OSList *list, int max_size);
42 int OSList_SetFreeDataPointer(OSList *list, void *free_data_function);
43
44 OSListNode *OSList_GetFirstNode(OSList *);
45 OSListNode *OSList_GetLastNode(OSList *);
46 OSListNode *OSList_GetPrevNode(OSList *);
47 OSListNode *OSList_GetNextNode(OSList *);
48 OSListNode *OSList_GetCurrentlyNode(OSList *list);
49
50 void OSList_DeleteCurrentlyNode(OSList *list);
51 void OSList_DeleteThisNode(OSList *list, OSListNode *thisnode);
52 void OSList_DeleteOldestNode(OSList *list);
53
54 int OSList_AddData(OSList *list, void *data);
55
56 #endif
57
58 /* EOF */