Imported Upstream version 2.5.1
[ossec-hids.git] / src / headers / store_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_STORE
16 #define _OS_STORE
17
18 /* Store node */
19 typedef struct _OSStoreNode
20 {
21     struct _OSStoreNode *next;
22     struct _OSStoreNode *prev;
23     void *data;
24     char *key;
25     int key_size;
26 }OSStoreNode;
27
28 /* Store list */
29 typedef struct _OSStore
30 {
31     OSStoreNode *first_node;
32     OSStoreNode *last_node;
33     OSStoreNode *cur_node;
34
35     int currently_size;
36     int max_size;
37
38     void (*free_data_function)(void *data);
39 }OSStore;
40
41
42 OSStore *OSStore_Create();
43 OSStore *OSStore_Free(OSStore *list);
44   
45 int OSStore_Put(OSStore *list, char *key, void *data);
46 int OSStore_Check(OSStore *list, char *key);
47 int OSStore_NCheck(OSStore *list, char *key);
48 int OSStore_NCaseCheck(OSStore *list, char *key);
49 int OSStore_GetPosition(OSStore *list, char *key);
50 void *OSStore_Get(OSStore *list, char *key);
51 OSStoreNode *OSStore_GetFirstNode(OSStore *list);
52 int OSStore_Sort(OSStore *list, void*(sort_data_function)(void *d1, void *d2));
53    
54
55
56 #endif
57
58 /* EOF */