10b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod/*
20b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * Copyright © 2012  Google, Inc.
30b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod *
40b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod *  This is part of HarfBuzz, a text shaping library.
50b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod *
60b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * Permission is hereby granted, without written agreement and without
70b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this
80b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * software and its documentation for any purpose, provided that the
90b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * above copyright notice and the following two paragraphs appear in
100b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * all copies of this software.
110b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod *
120b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
130b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
140b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
150b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
160b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * DAMAGE.
170b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod *
180b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
190b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
200b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
210b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
220b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
230b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod *
240b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod * Google Author(s): Behdad Esfahbod
250b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod */
260b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
270b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod#include "hb-set-private.hh"
280b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
290b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
306c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod/* Public API */
316c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
320b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
3320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
34085d4291a9f253a4b8e2eec8003ac11d02a9394fBehdad Esfahbod * hb_set_create: (Xconstructor)
3520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
3620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: (transfer full):
3720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
3820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
3920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
400b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_t *
41aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_create (void)
420b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
430b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  hb_set_t *set;
440b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
450b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  if (!(set = hb_object_create<hb_set_t> ()))
46f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod    return hb_set_get_empty ();
470b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
480b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  set->clear ();
490b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
500b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  return set;
510b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
520b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
5320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
5420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_get_empty:
5520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
56288f2899979bcc9e68f8115cb76e3271ed0e17bcBehdad Esfahbod * Return value: (transfer full):
5720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
5820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
5920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
600b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_t *
610b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_get_empty (void)
620b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
63f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod  static const hb_set_t _hb_set_nil = {
64f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod    HB_OBJECT_HEADER_STATIC,
658165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbod    true, /* in_error */
66f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod
67f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod    {0} /* elts */
68f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod  };
69f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod
70f06ab8a4262c759b4723614fd28f55ee77aa8466Behdad Esfahbod  return const_cast<hb_set_t *> (&_hb_set_nil);
710b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
720b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
7320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
7420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_reference: (skip)
7520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
7620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
7720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: (transfer full):
7820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
7920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
8020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
810b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_t *
820b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_reference (hb_set_t *set)
830b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
840b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  return hb_object_reference (set);
850b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
860b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
8720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
8820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_destroy: (skip)
8920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
9020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
9120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
9220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
930b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodvoid
940b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_destroy (hb_set_t *set)
950b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
960b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  if (!hb_object_destroy (set)) return;
970b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
98a5e39fed85e069ba1afbf90408349ad99ceb0e1dBehdad Esfahbod  set->fini ();
99a5e39fed85e069ba1afbf90408349ad99ceb0e1dBehdad Esfahbod
1000b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  free (set);
1010b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
1020b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
10320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
10420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_set_user_data: (skip)
10520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
10620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @key:
10720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @data:
10820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @destroy (closure data):
10920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @replace:
11020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
11120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value:
11220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
11320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
11420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
1150b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_bool_t
116aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_set_user_data (hb_set_t           *set,
117aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		      hb_user_data_key_t *key,
118aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		      void *              data,
119aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		      hb_destroy_func_t   destroy,
120aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		      hb_bool_t           replace)
1210b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
1220b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  return hb_object_set_user_data (set, key, data, destroy, replace);
1230b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
1240b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
12520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
12620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_get_user_data: (skip)
12720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
12820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @key:
12920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
13020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: (transfer none):
13120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
13220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
13320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
1340b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodvoid *
135aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_get_user_data (hb_set_t           *set,
136aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		      hb_user_data_key_t *key)
1370b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
1380b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  return hb_object_get_user_data (set, key);
1390b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
1400b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
1410b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
14220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
14320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_allocation_successful:
14420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
14520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
14620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
14720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
14820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value:
14920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
15020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
15120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
1520b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_bool_t
153aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_allocation_successful (const hb_set_t  *set HB_UNUSED)
1540b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
1558165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbod  return !set->in_error;
1560b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
1570b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
15820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
15920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_clear:
16020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
16120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
16220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
16320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
16420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
16520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
1660b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodvoid
1670b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_clear (hb_set_t *set)
1680b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
1690b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  set->clear ();
1700b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
1710b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
17220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
17320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_is_empty:
17420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
17520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
17620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
17720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
17820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value:
17920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
18020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
18120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
1820b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_bool_t
183aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_is_empty (const hb_set_t *set)
1846c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
185aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod  return set->is_empty ();
1866c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
1876c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
18820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
18920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_has:
19020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
19120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @codepoint:
19220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
19320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
19420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
19520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value:
19620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
19720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
19820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
1996c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodhb_bool_t
200aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_has (const hb_set_t *set,
2010b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod	    hb_codepoint_t  codepoint)
2020b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
2030b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  return set->has (codepoint);
2040b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
2050b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
20620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
20720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_add:
20820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
20920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @codepoint:
21020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
21120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
21220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
21320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
21420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
2150b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodvoid
2160b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_add (hb_set_t       *set,
2170b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod	    hb_codepoint_t  codepoint)
2180b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
2190b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  set->add (codepoint);
2200b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
2210b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod
22220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
22320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_add_range:
22420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
22520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @first:
22620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @last:
22720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
22820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
22920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
23020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
23120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
2320b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodvoid
233aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_add_range (hb_set_t       *set,
234aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		  hb_codepoint_t  first,
235aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		  hb_codepoint_t  last)
236aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod{
237aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod  set->add_range (first, last);
238aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod}
239aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod
24020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
24120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_del:
24220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
24320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @codepoint:
24420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
24520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
24620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
24720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
24820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
249aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodvoid
2500b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbodhb_set_del (hb_set_t       *set,
2510b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod	    hb_codepoint_t  codepoint)
2520b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod{
2530b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod  set->del (codepoint);
2540b08adb3539f2ec29682456b89c69e89ff5e9c03Behdad Esfahbod}
2556c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
25620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
25720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_del_range:
25820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
25920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @first:
26020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @last:
26120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
26220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
26320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
26420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
26520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
266aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodvoid
267aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_del_range (hb_set_t       *set,
268aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		  hb_codepoint_t  first,
269aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		  hb_codepoint_t  last)
270aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod{
271aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod  set->del_range (first, last);
272aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod}
273aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod
27420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
27520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_is_equal:
27620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
27720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @other:
27820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
27920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
28020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
28120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value:
28220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
28320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
28420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
2856c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodhb_bool_t
286aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_is_equal (const hb_set_t *set,
287aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		 const hb_set_t *other)
2886c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
289aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod  return set->is_equal (other);
2906c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
2916c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
29220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
29320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_set:
29420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
29520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @other:
29620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
29720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
29820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
29920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
30020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
3016c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodvoid
302aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_set (hb_set_t       *set,
303aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod	    const hb_set_t *other)
3046c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
3056c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod  set->set (other);
3066c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
3076c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
30820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
30920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_union:
31020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
31120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @other:
31220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
31320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
31420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
31520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
31620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
3176c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodvoid
318aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_union (hb_set_t       *set,
319aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod	      const hb_set_t *other)
3206c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
3216c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod  set->union_ (other);
3226c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
3236c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
32420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
32520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_intersect:
32620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
32720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @other:
32820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
32920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
33020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
33120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
33220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
3336c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodvoid
334aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_intersect (hb_set_t       *set,
335aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		  const hb_set_t *other)
3366c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
3376c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod  set->intersect (other);
3386c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
3396c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
34020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
34120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_subtract:
34220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
34320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @other:
34420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
34520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
34620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
34720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
34820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
3496c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodvoid
350aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_subtract (hb_set_t       *set,
351aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		 const hb_set_t *other)
3526c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
3536c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod  set->subtract (other);
3546c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
3556c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
35620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
35720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_symmetric_difference:
35820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
35920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @other:
36020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
36120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
36220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
36320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
36420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
36562c3e111fce0ad34960871134c2eb6da572df303Behdad Esfahbodvoid
366aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_symmetric_difference (hb_set_t       *set,
367aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod			     const hb_set_t *other)
36862c3e111fce0ad34960871134c2eb6da572df303Behdad Esfahbod{
36962c3e111fce0ad34960871134c2eb6da572df303Behdad Esfahbod  set->symmetric_difference (other);
37062c3e111fce0ad34960871134c2eb6da572df303Behdad Esfahbod}
37162c3e111fce0ad34960871134c2eb6da572df303Behdad Esfahbod
37220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
37320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_invert:
37420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
37520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
37620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
37720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
37820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
37920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
3808165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbodvoid
3818165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbodhb_set_invert (hb_set_t *set)
3828165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbod{
3838165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbod  set->invert ();
3848165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbod}
3858165f2765b93e99577ecc79b7956ae38c614bc78Behdad Esfahbod
38620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
38720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_get_population:
38820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
38920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
39020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Returns the number of numbers in the set.
39120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
39220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: set population.
39320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
39420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
39520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
396aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodunsigned int
397ac064a2db2b7a010d99527e183145286215aea81Behdad Esfahbodhb_set_get_population (const hb_set_t *set)
398aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod{
399aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod  return set->get_population ();
400aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod}
401aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod
40220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
40320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_get_min:
40420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
40520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
40620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Finds the minimum number in the set.
40720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
40820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
40920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
41020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
41120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
4126c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodhb_codepoint_t
413aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_get_min (const hb_set_t *set)
4146c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
415f039e79d5438a8fc4a3ec11a387bbfc0f6b83024Behdad Esfahbod  return set->get_min ();
4166c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
4176c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod
41820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
41920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_get_max:
42020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
42120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
42220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Finds the maximum number in the set.
42320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
42420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
42520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
42620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
42720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
4286c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbodhb_codepoint_t
429aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_get_max (const hb_set_t *set)
4306c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod{
431f039e79d5438a8fc4a3ec11a387bbfc0f6b83024Behdad Esfahbod  return set->get_max ();
4326c6ccaf575392f6e6bb9a15534026e4ea462705bBehdad Esfahbod}
43329ce446d3161b7ea5874352e5f8eb33cd59338c3Behdad Esfahbod
43420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
43520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_next:
43620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
43720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @codepoint: (inout):
43820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
43920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
44020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
44120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: whether there was a next value.
44220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
44320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
44420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
44529ce446d3161b7ea5874352e5f8eb33cd59338c3Behdad Esfahbodhb_bool_t
446aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_next (const hb_set_t *set,
44729ce446d3161b7ea5874352e5f8eb33cd59338c3Behdad Esfahbod	     hb_codepoint_t *codepoint)
44829ce446d3161b7ea5874352e5f8eb33cd59338c3Behdad Esfahbod{
44929ce446d3161b7ea5874352e5f8eb33cd59338c3Behdad Esfahbod  return set->next (codepoint);
45029ce446d3161b7ea5874352e5f8eb33cd59338c3Behdad Esfahbod}
451aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod
45220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod/**
45320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * hb_set_next_range:
45420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @set: a set.
45520cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @first: (out): output first codepoint in the range.
45620cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * @last: (inout): input current last and output last codepoint in the range.
45720cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
45820cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Gets the next consecutive range of numbers in @set that
45920cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * are greater than current value of @last.
46020cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
46120cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Return value: whether there was a next range.
46220cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod *
46320cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod * Since: 1.0
46420cbc1f8eb0811e6cefa3be3550e80df9c372782Behdad Esfahbod **/
465aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_bool_t
466aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbodhb_set_next_range (const hb_set_t *set,
467aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		   hb_codepoint_t *first,
468aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod		   hb_codepoint_t *last)
469aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod{
470aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod  return set->next_range (first, last);
471aec89de5641fbe1c3031d63dd5f40ec99bf2a538Behdad Esfahbod}
472