hb-set.cc revision 0b08adb3539f2ec29682456b89c69e89ff5e9c03
1/* 2 * Copyright © 2012 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-set-private.hh" 28 29 30 31static hb_set_t _hb_set_nil = { 32 HB_OBJECT_HEADER_STATIC, 33 34 {0} /* elts */ 35}; 36 37 38hb_set_t * 39hb_set_create () 40{ 41 hb_set_t *set; 42 43 if (!(set = hb_object_create<hb_set_t> ())) 44 return &_hb_set_nil; 45 46 set->clear (); 47 48 return set; 49} 50 51hb_set_t * 52hb_set_get_empty (void) 53{ 54 return &_hb_set_nil; 55} 56 57hb_set_t * 58hb_set_reference (hb_set_t *set) 59{ 60 return hb_object_reference (set); 61} 62 63void 64hb_set_destroy (hb_set_t *set) 65{ 66 if (!hb_object_destroy (set)) return; 67 68 free (set); 69} 70 71hb_bool_t 72hb_set_set_user_data (hb_set_t *set, 73 hb_user_data_key_t *key, 74 void * data, 75 hb_destroy_func_t destroy, 76 hb_bool_t replace) 77{ 78 return hb_object_set_user_data (set, key, data, destroy, replace); 79} 80 81void * 82hb_set_get_user_data (hb_set_t *set, 83 hb_user_data_key_t *key) 84{ 85 return hb_object_get_user_data (set, key); 86} 87 88 89hb_bool_t 90hb_set_allocation_successful (hb_set_t *set) 91{ 92 return TRUE; 93} 94 95void 96hb_set_clear (hb_set_t *set) 97{ 98 set->clear (); 99} 100 101hb_bool_t 102hb_set_has (hb_set_t *set, 103 hb_codepoint_t codepoint) 104{ 105 return set->has (codepoint); 106} 107 108void 109hb_set_add (hb_set_t *set, 110 hb_codepoint_t codepoint) 111{ 112 set->add (codepoint); 113} 114 115void 116hb_set_del (hb_set_t *set, 117 hb_codepoint_t codepoint) 118{ 119 set->del (codepoint); 120} 121