]> arthur.barton.de Git - netatalk.git/blob - include/atalk/dictionary.h
Writing metadata xattr on directories with sticky bit set, FR#94
[netatalk.git] / include / atalk / dictionary.h
1
2 /*-------------------------------------------------------------------------*/
3 /**
4    @file    dictionary.h
5    @author  N. Devillard
6    @date    Sep 2007
7    @brief   Implements a dictionary for string variables.
8
9    This module implements a simple dictionary object, i.e. a list
10    of string/string associations. This object is useful to store e.g.
11    informations retrieved from a configuration file (ini files).
12 */
13 /*--------------------------------------------------------------------------*/
14
15 /*
16         $Author: ndevilla $
17         $Date: 2007-11-23 21:37:00 $
18 */
19
20 #ifndef _DICTIONARY_H_
21 #define _DICTIONARY_H_
22
23 /*---------------------------------------------------------------------------
24                                                                 Includes
25  ---------------------------------------------------------------------------*/
26
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <string.h>
30 #include <unistd.h>
31
32 /*---------------------------------------------------------------------------
33                                                                 New types
34  ---------------------------------------------------------------------------*/
35
36
37 /*-------------------------------------------------------------------------*/
38 /**
39   @brief        Dictionary object
40
41   This object contains a list of string/string associations. Each
42   association is identified by a unique string key. Looking up values
43   in the dictionary is speeded up by the use of a (hopefully collision-free)
44   hash function.
45  */
46 /*-------------------------------------------------------------------------*/
47 typedef struct _dictionary_ {
48         int                             n ;             /** Number of entries in dictionary */
49         int                             size ;  /** Storage size */
50         char        **  val ;   /** List of string values */
51         char        **  key ;   /** List of string keys */
52         unsigned         *      hash ;  /** List of hash values for keys */
53 } dictionary ;
54
55
56 /*---------------------------------------------------------------------------
57                                                         Function prototypes
58  ---------------------------------------------------------------------------*/
59
60 unsigned   atalkdict_hash  (char * key);
61 dictionary *atalkdict_new  (int size);
62 void       atalkdict_del   (dictionary * vd);
63 const char *atalkdict_get  (const dictionary * d, const char *section, const char * key, const char * def);
64 int        atalkdict_set   (dictionary * vd, char *section, char * key, char * val);
65 void       atalkdict_unset (dictionary * d, char *section, char * key);
66 void       atalkdict_dump  (dictionary * d, FILE * out);
67
68 #endif