2
(C) Gustav Hartvigsson, 2013.
4
This program is free software: you can redistribute it and/or modify
5
it under the terms of the GNU Lesser General Public License as
6
published by the Free Software Foundation, either version 3 of the
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
14
You should have received a copy of the GNU General Public License
15
along with this program. If not, see <http://www.gnu.org/licenses/>.
22
* An SMap is a data structure that holds many mappings of objects to objects:
23
* say, a string to an other string. This can be likened to the Dict structure
24
* in python, but not fully.
26
* An SMap is made up of SMapItems, each MapItem holds two pointers to data.
27
* The first pointer is the key, the secold is the value.
29
* please note that SMaps can be slow and are unordered.
34
#include "SimpleTypeSystem.h"
35
#include "baseobject.h"
39
* SMapItem holds the mapping of a key to a value.
41
typedef struct _SMapItem SMapItem;
44
* An SMap is a map many SMapItems. Mapping between a key and a value.
47
* * \c s_map_new \c ()
48
* * \c s_map_free \c ()
49
* * \c s_map_add \c ()
50
* * \c s_map_get \c ()
52
typedef struct _SMap SMap;
55
typedef struct _SMapClass SMapClass;
58
typedef struct _SMapPrivate SMapPrivate;
61
* Data structure representing an SMapItem
64
void * key; /** The Key */
65
void * value; /** The Value */
69
* Data structure representing an SMap
72
SBaseObjectInstance parent; /** The parent instance */
73
SMapPrivate * priv; /** Private data pointer */
77
SBaseObjectClass parentclass;
78
bool CompFunc is_equal; /** method to check if items are equal. */
81
/* -------------------------------
82
* The SMapItem functions.
83
* -------------------------------
87
* create a new SMapItem.
89
* @param key The key to be added to the item.
90
* @param value The value to be added to the item.
92
SMapItem * s_map_item_new (void * key, void * value);
97
* @param self the item to be freed.
99
void s_map_item_free (SMapItem * self);
101
/* -------------------------------
102
* The SMap functions.
103
* -------------------------------
107
* s_map_new creates a new SMap object, it takes a CompFunc as an argument.
109
* @param comp_func tells the SMap object if the key already exists when
110
* adding key/value pares or when searching after a key when retrieving a value.
112
* A the @c CompFunc returns true if the first and second parameters are equal,
115
SMap * s_map_new ( CompFunc comp_func );
118
* This function frees an instance of an SMap.
120
* @param self the object to free.
122
void s_map_free (SMap * self);
125
* This function adds a key/value pair to an SMap.
127
* @param self the SMap to add the key/value pair to.
128
* @param key the key that is used to
130
void s_map_add (SMap * self ,void * key, void * value);
133
* Get a value using using a key.
135
* @param self the SMap that you want to retrieve a value from.
136
* @param key the key that you use to retrieve the value from the SMap from
139
void * s_map_get (SMap * self, void * key);