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