blob: 138a85612fc14452440eb157be342fd841e95c62 [file] [log] [blame]
Behdad Esfahbod743fdd92018-05-29 16:28:48 -07001/*
2 * Copyright © 2018 Google, Inc.
3 *
4 * This is part of HarfBuzz, a text shaping library.
5 *
6 * Permission is hereby granted, without written agreement and without
7 * license or royalty fees, to use, copy, modify, and distribute this
8 * software and its documentation for any purpose, provided that the
9 * above copyright notice and the following two paragraphs appear in
10 * all copies of this software.
11 *
12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16 * DAMAGE.
17 *
18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23 *
24 * Google Author(s): Behdad Esfahbod
25 */
26
27#include "hb-map-private.hh"
28
29
30/* Public API */
31
32
33/**
34 * hb_map_create: (Xconstructor)
35 *
36 * Return value: (transfer full):
37 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -070038 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -070039 **/
40hb_map_t *
41hb_map_create (void)
42{
43 hb_map_t *map;
44
45 if (!(map = hb_object_create<hb_map_t> ()))
46 return hb_map_get_empty ();
47
48 map->init_shallow ();
49
50 return map;
51}
52
Behdad Esfahbod743fdd92018-05-29 16:28:48 -070053/**
54 * hb_map_get_empty:
55 *
56 * Return value: (transfer full):
57 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -070058 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -070059 **/
60hb_map_t *
61hb_map_get_empty (void)
62{
Behdad Esfahbod7b50bf52018-05-31 20:20:17 -070063 return const_cast<hb_map_t *> (&Null(hb_map_t));
Behdad Esfahbod743fdd92018-05-29 16:28:48 -070064}
65
66/**
67 * hb_map_reference: (skip)
68 * @map: a map.
69 *
70 * Return value: (transfer full):
71 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -070072 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -070073 **/
74hb_map_t *
75hb_map_reference (hb_map_t *map)
76{
77 return hb_object_reference (map);
78}
79
80/**
81 * hb_map_destroy: (skip)
82 * @map: a map.
83 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -070084 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -070085 **/
86void
87hb_map_destroy (hb_map_t *map)
88{
89 if (!hb_object_destroy (map)) return;
90
91 map->fini_shallow ();
92
93 free (map);
94}
95
96/**
97 * hb_map_set_user_data: (skip)
98 * @map: a map.
99 * @key:
100 * @data:
101 * @destroy:
102 * @replace:
103 *
104 * Return value:
105 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700106 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700107 **/
108hb_bool_t
109hb_map_set_user_data (hb_map_t *map,
110 hb_user_data_key_t *key,
111 void * data,
112 hb_destroy_func_t destroy,
113 hb_bool_t replace)
114{
115 return hb_object_set_user_data (map, key, data, destroy, replace);
116}
117
118/**
119 * hb_map_get_user_data: (skip)
120 * @map: a map.
121 * @key:
122 *
123 * Return value: (transfer none):
124 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700125 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700126 **/
127void *
128hb_map_get_user_data (hb_map_t *map,
129 hb_user_data_key_t *key)
130{
131 return hb_object_get_user_data (map, key);
132}
133
134
135/**
136 * hb_map_allocation_successful:
137 * @map: a map.
138 *
139 *
140 *
141 * Return value:
142 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700143 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700144 **/
145hb_bool_t
146hb_map_allocation_successful (const hb_map_t *map)
147{
Behdad Esfahbod7185b272018-05-31 20:03:00 -0700148 return map->successful;
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700149}
150
151
152/**
153 * hb_map_set:
154 * @map: a map.
155 * @key:
156 * @value:
157 *
158 *
159 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700160 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700161 **/
Behdad Esfahbodfc51c452018-05-29 16:44:55 -0700162void
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700163hb_map_set (hb_map_t *map,
164 hb_codepoint_t key,
165 hb_codepoint_t value)
166{
Behdad Esfahbodfc51c452018-05-29 16:44:55 -0700167 map->set (key, value);
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700168}
169
170/**
171 * hb_map_get:
172 * @map: a map.
173 * @key:
174 *
175 *
176 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700177 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700178 **/
179hb_codepoint_t
180hb_map_get (const hb_map_t *map,
181 hb_codepoint_t key)
182{
183 return map->get (key);
184}
185
186/**
187 * hb_map_del:
188 * @map: a map.
Behdad Esfahbodd7a15792018-07-31 22:28:28 -0700189 * @key:
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700190 *
191 *
192 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700193 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700194 **/
195void
196hb_map_del (hb_map_t *map,
197 hb_codepoint_t key)
198{
199 map->del (key);
200}
201
202/**
203 * hb_map_has:
204 * @map: a map.
Behdad Esfahbodd7a15792018-07-31 22:28:28 -0700205 * @key:
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700206 *
207 *
208 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700209 * Since: 1.7.7
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700210 **/
Behdad Esfahbod25783902018-05-29 17:34:35 -0700211hb_bool_t
Behdad Esfahbod743fdd92018-05-29 16:28:48 -0700212hb_map_has (const hb_map_t *map,
213 hb_codepoint_t key)
214{
215 return map->has (key);
216}
217
218
Behdad Esfahbod661e9ae2018-05-29 17:09:17 -0700219/**
220 * hb_map_clear:
221 * @map: a map.
222 *
223 *
224 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700225 * Since: 1.7.7
Behdad Esfahbod661e9ae2018-05-29 17:09:17 -0700226 **/
227void
228hb_map_clear (hb_map_t *map)
229{
230 return map->clear ();
231}
232
233/**
234 * hb_map_is_empty:
235 * @map: a map.
236 *
237 *
238 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700239 * Since: 1.7.7
Behdad Esfahbod661e9ae2018-05-29 17:09:17 -0700240 **/
241hb_bool_t
242hb_map_is_empty (const hb_map_t *map)
243{
244 return map->is_empty ();
245}
246
247/**
248 * hb_map_get_population:
249 * @map: a map.
250 *
251 *
252 *
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700253 * Since: 1.7.7
Behdad Esfahbod661e9ae2018-05-29 17:09:17 -0700254 **/
255unsigned int
256hb_map_get_population (const hb_map_t *map)
257{
258 return map->get_population ();
259}