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