summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-string-map.h
blob: 22ff5ae0a90c7addd6d7bc5f26c7b37d63cb0f83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-

   nautilus-string-map.h: A many-to-one string mapping data structure.
 
   Copyright (C) 1999, 2000 Eazel, Inc.
  
   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.
  
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.
  
   You should have received a copy of the GNU General Public
   License along with this program; if not, write to the
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
  
   Author: Ramiro Estrugo <ramiro@eazel.com>
*/

/* NautilusStringMap is a simple data structure to manage many-to-one 
 * mappings of string.  For example:
 * 
 * map = map_new (TRUE);
 * map_add (map, "animal", "dog");
 * map_add (map, "animal", "cat");
 * map_add (map, "animal", "mouse");
 * 
 * map_lookup (map, "dog") => "animal"
 * map_lookup (map, "cat") => "animal"
 * map_lookup (map, "animal") => "animal"
 *
 */

#ifndef NAUTILUS_STRING_MAP_H
#define NAUTILUS_STRING_MAP_H

#include <glib.h>

/* Opaque type declaration. */
typedef struct _NautilusStringMap NautilusStringMap;

/* Construct an empty string map. */
NautilusStringMap *nautilus_string_map_new    (gboolean                 case_sensitive);

/* Add a mapping from 'string' to 'strings_maps_to' */
void               nautilus_string_map_add    (NautilusStringMap       *string_map,
					       const char              *string_maps_to,
					       const char              *string);

/* Free the string map */
void               nautilus_string_map_free   (NautilusStringMap       *string_map);


/* Clear the string map */
void               nautilus_string_map_clear  (NautilusStringMap       *string_map);


/* Lookup the string in the map.  Returns the string 'string' maps to or NULL of not found. */
char *             nautilus_string_map_lookup (const NautilusStringMap *string_map,
					       const char              *string);


#endif /* NAUTILUS_STRING_MAP_H */