/src/harfbuzz/src/hb-map.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
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 | | #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) |
28 | | #error "Include <hb.h> instead." |
29 | | #endif |
30 | | |
31 | | #ifndef HB_MAP_H |
32 | | #define HB_MAP_H |
33 | | |
34 | | #include "hb-common.h" |
35 | | |
36 | | HB_BEGIN_DECLS |
37 | | |
38 | | |
39 | | /** |
40 | | * HB_MAP_VALUE_INVALID: |
41 | | * |
42 | | * Unset #hb_map_t value. |
43 | | * |
44 | | * Since: 1.7.7 |
45 | | */ |
46 | 0 | #define HB_MAP_VALUE_INVALID ((hb_codepoint_t) -1) |
47 | | |
48 | | /** |
49 | | * hb_map_t: |
50 | | * |
51 | | * Data type for holding integer-to-integer hash maps. |
52 | | * |
53 | | **/ |
54 | | typedef struct hb_map_t hb_map_t; |
55 | | |
56 | | |
57 | | HB_EXTERN hb_map_t * |
58 | | hb_map_create (void); |
59 | | |
60 | | HB_EXTERN hb_map_t * |
61 | | hb_map_get_empty (void); |
62 | | |
63 | | HB_EXTERN hb_map_t * |
64 | | hb_map_reference (hb_map_t *map); |
65 | | |
66 | | HB_EXTERN void |
67 | | hb_map_destroy (hb_map_t *map); |
68 | | |
69 | | HB_EXTERN hb_bool_t |
70 | | hb_map_set_user_data (hb_map_t *map, |
71 | | hb_user_data_key_t *key, |
72 | | void * data, |
73 | | hb_destroy_func_t destroy, |
74 | | hb_bool_t replace); |
75 | | |
76 | | HB_EXTERN void * |
77 | | hb_map_get_user_data (hb_map_t *map, |
78 | | hb_user_data_key_t *key); |
79 | | |
80 | | |
81 | | /* Returns false if allocation has failed before */ |
82 | | HB_EXTERN hb_bool_t |
83 | | hb_map_allocation_successful (const hb_map_t *map); |
84 | | |
85 | | HB_EXTERN hb_map_t * |
86 | | hb_map_copy (const hb_map_t *map); |
87 | | |
88 | | HB_EXTERN void |
89 | | hb_map_clear (hb_map_t *map); |
90 | | |
91 | | HB_EXTERN hb_bool_t |
92 | | hb_map_is_empty (const hb_map_t *map); |
93 | | |
94 | | HB_EXTERN unsigned int |
95 | | hb_map_get_population (const hb_map_t *map); |
96 | | |
97 | | HB_EXTERN hb_bool_t |
98 | | hb_map_is_equal (const hb_map_t *map, |
99 | | const hb_map_t *other); |
100 | | |
101 | | HB_EXTERN unsigned int |
102 | | hb_map_hash (const hb_map_t *map); |
103 | | |
104 | | HB_EXTERN void |
105 | | hb_map_set (hb_map_t *map, |
106 | | hb_codepoint_t key, |
107 | | hb_codepoint_t value); |
108 | | |
109 | | HB_EXTERN hb_codepoint_t |
110 | | hb_map_get (const hb_map_t *map, |
111 | | hb_codepoint_t key); |
112 | | |
113 | | HB_EXTERN void |
114 | | hb_map_del (hb_map_t *map, |
115 | | hb_codepoint_t key); |
116 | | |
117 | | HB_EXTERN hb_bool_t |
118 | | hb_map_has (const hb_map_t *map, |
119 | | hb_codepoint_t key); |
120 | | |
121 | | |
122 | | HB_END_DECLS |
123 | | |
124 | | #endif /* HB_MAP_H */ |