Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:04:02

0001 /*
0002  * Copyright © 2018  Google, Inc.
0003  *
0004  *  This is part of HarfBuzz, a text shaping library.
0005  *
0006  * Permission is hereby granted, without written agreement and without
0007  * license or royalty fees, to use, copy, modify, and distribute this
0008  * software and its documentation for any purpose, provided that the
0009  * above copyright notice and the following two paragraphs appear in
0010  * all copies of this software.
0011  *
0012  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
0013  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
0014  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
0015  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
0016  * DAMAGE.
0017  *
0018  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
0019  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
0020  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
0021  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
0022  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
0023  *
0024  * Google Author(s): Behdad Esfahbod
0025  */
0026 
0027 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
0028 #error "Include <hb.h> instead."
0029 #endif
0030 
0031 #ifndef HB_MAP_H
0032 #define HB_MAP_H
0033 
0034 #include "hb-common.h"
0035 #include "hb-set.h"
0036 
0037 HB_BEGIN_DECLS
0038 
0039 
0040 /**
0041  * HB_MAP_VALUE_INVALID:
0042  *
0043  * Unset #hb_map_t value.
0044  *
0045  * Since: 1.7.7
0046  */
0047 #define HB_MAP_VALUE_INVALID HB_CODEPOINT_INVALID
0048 
0049 /**
0050  * hb_map_t:
0051  *
0052  * Data type for holding integer-to-integer hash maps.
0053  *
0054  **/
0055 typedef struct hb_map_t hb_map_t;
0056 
0057 
0058 HB_EXTERN hb_map_t *
0059 hb_map_create (void);
0060 
0061 HB_EXTERN hb_map_t *
0062 hb_map_get_empty (void);
0063 
0064 HB_EXTERN hb_map_t *
0065 hb_map_reference (hb_map_t *map);
0066 
0067 HB_EXTERN void
0068 hb_map_destroy (hb_map_t *map);
0069 
0070 HB_EXTERN hb_bool_t
0071 hb_map_set_user_data (hb_map_t           *map,
0072               hb_user_data_key_t *key,
0073               void *              data,
0074               hb_destroy_func_t   destroy,
0075               hb_bool_t           replace);
0076 
0077 HB_EXTERN void *
0078 hb_map_get_user_data (const hb_map_t     *map,
0079               hb_user_data_key_t *key);
0080 
0081 
0082 /* Returns false if allocation has failed before */
0083 HB_EXTERN hb_bool_t
0084 hb_map_allocation_successful (const hb_map_t *map);
0085 
0086 HB_EXTERN hb_map_t *
0087 hb_map_copy (const hb_map_t *map);
0088 
0089 HB_EXTERN void
0090 hb_map_clear (hb_map_t *map);
0091 
0092 HB_EXTERN hb_bool_t
0093 hb_map_is_empty (const hb_map_t *map);
0094 
0095 HB_EXTERN unsigned int
0096 hb_map_get_population (const hb_map_t *map);
0097 
0098 HB_EXTERN hb_bool_t
0099 hb_map_is_equal (const hb_map_t *map,
0100          const hb_map_t *other);
0101 
0102 HB_EXTERN unsigned int
0103 hb_map_hash (const hb_map_t *map);
0104 
0105 HB_EXTERN void
0106 hb_map_set (hb_map_t       *map,
0107         hb_codepoint_t  key,
0108         hb_codepoint_t  value);
0109 
0110 HB_EXTERN hb_codepoint_t
0111 hb_map_get (const hb_map_t *map,
0112         hb_codepoint_t  key);
0113 
0114 HB_EXTERN void
0115 hb_map_del (hb_map_t       *map,
0116         hb_codepoint_t  key);
0117 
0118 HB_EXTERN hb_bool_t
0119 hb_map_has (const hb_map_t *map,
0120         hb_codepoint_t  key);
0121 
0122 HB_EXTERN void
0123 hb_map_update (hb_map_t *map,
0124            const hb_map_t *other);
0125 
0126 /* Pass -1 in for idx to get started. */
0127 HB_EXTERN hb_bool_t
0128 hb_map_next (const hb_map_t *map,
0129          int *idx,
0130          hb_codepoint_t *key,
0131          hb_codepoint_t *value);
0132 
0133 HB_EXTERN void
0134 hb_map_keys (const hb_map_t *map,
0135          hb_set_t *keys);
0136 
0137 HB_EXTERN void
0138 hb_map_values (const hb_map_t *map,
0139            hb_set_t *values);
0140 
0141 HB_END_DECLS
0142 
0143 #endif /* HB_MAP_H */