Merge remote-tracking branch 'zere/master'
[planetdump.git] / keyvals.h
1 /* Common key-value list processing
2  *
3  * Used as a small general purpose store for 
4  * tags, segment lists etc 
5  *
6  */
7
8 #ifndef KEYVAL_H
9 #define KEYVAL_H
10
11 struct keyval {
12     char *key;
13     char *value;
14     struct keyval *next;
15     struct keyval *prev;
16 };
17
18 void initList(struct keyval *head);
19 void freeItem(struct keyval *p);
20 unsigned int countList(struct keyval *head);
21 int listHasData(struct keyval *head);
22 char *getItem(struct keyval *head, const char *name);
23 struct keyval *popItem(struct keyval *head);
24 void pushItem(struct keyval *head, struct keyval *item);
25 int addItem(struct keyval *head, const char *name, const char *value, int noDupe);
26 void resetList(struct keyval *head);
27 struct keyval *getMatches(struct keyval *head, const char *name);
28 void updateItem(struct keyval *head, const char *name, const char *value);
29
30 #endif