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