Coverage Report

Created: 2025-07-01 07:07

/src/harfbuzz/src/hb-bit-set-invertible.hh
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright © 2012,2017  Google, Inc.
3
 * Copyright © 2021 Behdad Esfahbod
4
 *
5
 *  This is part of HarfBuzz, a text shaping library.
6
 *
7
 * Permission is hereby granted, without written agreement and without
8
 * license or royalty fees, to use, copy, modify, and distribute this
9
 * software and its documentation for any purpose, provided that the
10
 * above copyright notice and the following two paragraphs appear in
11
 * all copies of this software.
12
 *
13
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
14
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
15
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
16
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
17
 * DAMAGE.
18
 *
19
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
20
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
22
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
23
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24
 *
25
 * Google Author(s): Behdad Esfahbod
26
 */
27
28
#ifndef HB_BIT_SET_INVERTIBLE_HH
29
#define HB_BIT_SET_INVERTIBLE_HH
30
31
#include "hb.hh"
32
#include "hb-bit-set.hh"
33
34
35
struct hb_bit_set_invertible_t
36
{
37
  hb_bit_set_t s;
38
  bool inverted = false;
39
40
35.0M
  hb_bit_set_invertible_t () = default;
41
  hb_bit_set_invertible_t (const hb_bit_set_invertible_t& o) = default;
42
0
  hb_bit_set_invertible_t (hb_bit_set_invertible_t&& other)  noexcept : hb_bit_set_invertible_t () { hb_swap (*this, other); }
43
  hb_bit_set_invertible_t& operator= (const hb_bit_set_invertible_t& o) = default;
44
7.82M
  hb_bit_set_invertible_t& operator= (hb_bit_set_invertible_t&& other)  noexcept { hb_swap (*this, other); return *this; }
45
  friend void swap (hb_bit_set_invertible_t &a, hb_bit_set_invertible_t &b) noexcept
46
7.82M
  {
47
7.82M
    if (likely (!a.s.successful || !b.s.successful))
48
7.27k
      return;
49
7.81M
    hb_swap (a.inverted, b.inverted);
50
7.81M
    hb_swap (a.s, b.s);
51
7.81M
  }
52
53
35.0M
  void init () { s.init (); inverted = false; }
54
35.0M
  void fini () { s.fini (); }
55
1
  void err () { s.err (); }
56
52.4M
  bool in_error () const { return s.in_error (); }
57
0
  explicit operator bool () const { return !is_empty (); }
58
59
0
  void alloc (unsigned sz) { s.alloc (sz); }
60
  void reset ()
61
3.50k
  {
62
3.50k
    s.reset ();
63
3.50k
    inverted = false;
64
3.50k
  }
65
  void clear ()
66
23.1M
  {
67
23.1M
    s.clear ();
68
23.1M
    if (likely (s.successful))
69
23.1M
      inverted = false;
70
23.1M
  }
71
  void invert ()
72
72.7k
  {
73
72.7k
    if (likely (s.successful))
74
72.7k
      inverted = !inverted;
75
72.7k
  }
76
77
  bool is_inverted () const
78
54.4k
  {
79
54.4k
    return inverted;
80
54.4k
  }
81
82
  bool is_empty () const
83
642k
  {
84
642k
    hb_codepoint_t v = INVALID;
85
642k
    next (&v);
86
642k
    return v == INVALID;
87
642k
  }
88
0
  uint32_t hash () const { return s.hash () ^ (uint32_t) inverted; }
89
90
  hb_codepoint_t get_min () const
91
213k
  {
92
213k
    hb_codepoint_t v = INVALID;
93
213k
    next (&v);
94
213k
    return v;
95
213k
  }
96
  hb_codepoint_t get_max () const
97
198k
  {
98
198k
    hb_codepoint_t v = INVALID;
99
198k
    previous (&v);
100
198k
    return v;
101
198k
  }
102
  unsigned int get_population () const
103
56.2M
  { return inverted ? INVALID - s.get_population () : s.get_population (); }
104
105
106
863M
  void add (hb_codepoint_t g) { unlikely (inverted) ? s.del (g) : s.add (g); }
107
  bool add_range (hb_codepoint_t a, hb_codepoint_t b)
108
6.01M
  { return unlikely (inverted) ? ((void) s.del_range (a, b), true) : s.add_range (a, b); }
109
110
  template <typename T>
111
  void add_array (const T *array, unsigned int count, unsigned int stride=sizeof(T))
112
3.90M
  { inverted ? s.del_array (array, count, stride) : s.add_array (array, count, stride); }
void hb_bit_set_invertible_t::add_array<OT::Index>(OT::Index const*, unsigned int, unsigned int)
Line
Count
Source
112
1.56M
  { inverted ? s.del_array (array, count, stride) : s.add_array (array, count, stride); }
void hb_bit_set_invertible_t::add_array<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int)
Line
Count
Source
112
36.9k
  { inverted ? s.del_array (array, count, stride) : s.add_array (array, count, stride); }
void hb_bit_set_invertible_t::add_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int)
Line
Count
Source
112
2.10M
  { inverted ? s.del_array (array, count, stride) : s.add_array (array, count, stride); }
void hb_bit_set_invertible_t::add_array<unsigned int>(unsigned int const*, unsigned int, unsigned int)
Line
Count
Source
112
205k
  { inverted ? s.del_array (array, count, stride) : s.add_array (array, count, stride); }
113
  template <typename T>
114
  void add_array (const hb_array_t<const T>& arr) { add_array (&arr, arr.len ()); }
115
116
  /* Might return false if array looks unsorted.
117
   * Used for faster rejection of corrupt data. */
118
  template <typename T>
119
  bool add_sorted_array (const T *array, unsigned int count, unsigned int stride=sizeof(T))
120
6.15k
  { return inverted ? s.del_sorted_array (array, count, stride) : s.add_sorted_array (array, count, stride); }
Unexecuted instantiation: bool hb_bit_set_invertible_t::add_sorted_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int)
Unexecuted instantiation: bool hb_bit_set_invertible_t::add_sorted_array<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int)
bool hb_bit_set_invertible_t::add_sorted_array<unsigned int>(unsigned int const*, unsigned int, unsigned int)
Line
Count
Source
120
6.15k
  { return inverted ? s.del_sorted_array (array, count, stride) : s.add_sorted_array (array, count, stride); }
121
  template <typename T>
122
  bool add_sorted_array (const hb_sorted_array_t<const T>& arr) { return add_sorted_array (&arr, arr.len ()); }
123
124
5.42M
  void del (hb_codepoint_t g) { unlikely (inverted) ? s.add (g) : s.del (g); }
125
  void del_range (hb_codepoint_t a, hb_codepoint_t b)
126
11.3M
  { unlikely (inverted) ? (void) s.add_range (a, b) : s.del_range (a, b); }
127
128
3.00G
  bool get (hb_codepoint_t g) const { return s.get (g) ^ inverted; }
129
0
  bool may_have (hb_codepoint_t g) const { return get (g); }
130
131
  /* Has interface. */
132
0
  bool operator [] (hb_codepoint_t k) const { return get (k); }
133
0
  bool has (hb_codepoint_t k) const { return (*this)[k]; }
134
  /* Predicate. */
135
0
  bool operator () (hb_codepoint_t k) const { return has (k); }
136
137
  /* Sink interface. */
138
  hb_bit_set_invertible_t& operator << (hb_codepoint_t v)
139
0
  { add (v); return *this; }
140
  hb_bit_set_invertible_t& operator << (const hb_codepoint_pair_t& range)
141
0
  { add_range (range.first, range.second); return *this; }
142
143
  bool may_intersect (const hb_bit_set_invertible_t &other) const
144
0
  { return inverted || other.inverted || s.intersects (other.s); }
145
146
  bool intersects (hb_codepoint_t first, hb_codepoint_t last) const
147
7.30M
  {
148
7.30M
    hb_codepoint_t c = first - 1;
149
7.30M
    return next (&c) && c <= last;
150
7.30M
  }
151
152
  void set (const hb_bit_set_invertible_t &other)
153
18.3M
  {
154
18.3M
    s.set (other.s);
155
18.3M
    if (likely (s.successful))
156
18.3M
      inverted = other.inverted;
157
18.3M
  }
158
159
  bool is_equal (const hb_bit_set_invertible_t &other) const
160
0
  {
161
0
    if (likely (inverted == other.inverted))
162
0
      return s.is_equal (other.s);
163
0
    else
164
0
    {
165
      /* TODO Add iter_ranges() and use here. */
166
0
      auto it1 = iter ();
167
0
      auto it2 = other.iter ();
168
0
      return hb_all (+ hb_zip (it1, it2)
169
0
         | hb_map ([](hb_codepoint_pair_t _) { return _.first == _.second; }));
170
0
    }
171
0
  }
172
173
  bool is_subset (const hb_bit_set_invertible_t &larger_set) const
174
19.2M
  {
175
19.2M
    if (unlikely (inverted != larger_set.inverted))
176
0
      return hb_all (hb_iter (s) | hb_map (larger_set.s));
177
19.2M
    else
178
19.2M
      return unlikely (inverted) ? larger_set.s.is_subset (s) : s.is_subset (larger_set.s);
179
19.2M
  }
180
181
  protected:
182
  template <typename Op>
183
  void process (const Op& op, const hb_bit_set_invertible_t &other)
184
22.9M
  { s.process (op, other.s); }
Unexecuted instantiation: hb-aat-layout.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-layout.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-layout.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-layout.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-layout.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-map.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-map.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-map.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-map.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-aat-map.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-buffer.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-buffer.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-buffer.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-buffer.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-buffer.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-common.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-common.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-common.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-common.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-common.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face-builder.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face-builder.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face-builder.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face-builder.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-face-builder.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-font.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-font.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-font.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-font.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-font.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-map.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-map.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-map.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-map.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-map.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-color.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-color.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-color.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-color.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-color.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-face.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-face.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-face.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-face.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-face.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-font.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-font.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-font.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-font.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-font.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: VARC.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: VARC.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: VARC.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: VARC.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: VARC.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-layout.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-layout.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-layout.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-layout.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-layout.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-math.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-math.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-math.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-math.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-math.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-meta.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-meta.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-meta.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-meta.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-meta.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-metrics.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-metrics.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-metrics.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-metrics.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-metrics.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-name.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-name.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-name.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-name.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-name.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-var.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-var.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-var.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-var.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-var.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-set.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
hb-set.cc:void hb_bit_set_invertible_t::process<$_8>($_8 const&, hb_bit_set_invertible_t const&)
Line
Count
Source
184
22.8M
  { s.process (op, other.s); }
hb-set.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Line
Count
Source
184
128k
  { s.process (op, other.s); }
Unexecuted instantiation: hb-set.cc:void hb_bit_set_invertible_t::process<$_21>($_21 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-set.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff1-table.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff1-table.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff1-table.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff1-table.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff1-table.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff2-table.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff2-table.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff2-table.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff2-table.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-cff2-table.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-map.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-map.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-map.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-map.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-map.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-arabic.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-arabic.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-arabic.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-arabic.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-arabic.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-default.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-default.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-default.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-default.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-default.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hangul.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hangul.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hangul.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hangul.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hangul.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-khmer.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-khmer.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-khmer.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-khmer.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-khmer.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-thai.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-thai.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-thai.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-thai.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-thai.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-use.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-use.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-use.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-use.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-use.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-fallback.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-fallback.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-fallback.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-fallback.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-fallback.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-normalize.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-normalize.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-normalize.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-normalize.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shape-normalize.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-serialize.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-serialize.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-serialize.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-serialize.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-serialize.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: gsubgpos-context.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: gsubgpos-context.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: gsubgpos-context.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: gsubgpos-context.cc:void hb_bit_set_invertible_t::process<$_25>($_25 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: gsubgpos-context.cc:void hb_bit_set_invertible_t::process<$_17>($_17 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-input.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-input.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-input.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-input.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-input.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset.cc:void hb_bit_set_invertible_t::process<$_16>($_16 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset.cc:void hb_bit_set_invertible_t::process<$_27>($_27 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset.cc:void hb_bit_set_invertible_t::process<$_18>($_18 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff1.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff1.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff1.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff1.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff1.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff2.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff2.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff2.cc:void hb_bit_set_invertible_t::process<$_16>($_16 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff2.cc:void hb_bit_set_invertible_t::process<$_25>($_25 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff2.cc:void hb_bit_set_invertible_t::process<$_18>($_18 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-instancer-iup.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-instancer-iup.cc:void hb_bit_set_invertible_t::process<$_9>($_9 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-instancer-iup.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-instancer-iup.cc:void hb_bit_set_invertible_t::process<$_22>($_22 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-instancer-iup.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan.cc:void hb_bit_set_invertible_t::process<$_25>($_25 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan.cc:void hb_bit_set_invertible_t::process<$_17>($_17 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-layout.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-layout.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-layout.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-layout.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-layout.cc:void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-var.cc:void hb_bit_set_invertible_t::process<$_13>($_13 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-var.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-var.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-var.cc:void hb_bit_set_invertible_t::process<$_24>($_24 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-plan-var.cc:void hb_bit_set_invertible_t::process<$_16>($_16 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff-common.cc:void hb_bit_set_invertible_t::process<$_11>($_11 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff-common.cc:void hb_bit_set_invertible_t::process<$_10>($_10 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff-common.cc:void hb_bit_set_invertible_t::process<$_12>($_12 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff-common.cc:void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&)
Unexecuted instantiation: hb-subset-cff-common.cc:void hb_bit_set_invertible_t::process<$_14>($_14 const&, hb_bit_set_invertible_t const&)
185
  public:
186
  void union_ (const hb_bit_set_invertible_t &other)
187
22.8M
  {
188
22.8M
    if (likely (inverted == other.inverted))
189
22.8M
    {
190
22.8M
      if (unlikely (inverted))
191
0
  process (hb_bitwise_and, other);
192
22.8M
      else
193
22.8M
  process (hb_bitwise_or, other); /* Main branch. */
194
22.8M
    }
195
0
    else
196
0
    {
197
0
      if (unlikely (inverted))
198
0
  process (hb_bitwise_gt, other);
199
0
      else
200
0
  process (hb_bitwise_lt, other);
201
0
    }
202
22.8M
    if (likely (s.successful))
203
22.8M
      inverted = inverted || other.inverted;
204
22.8M
  }
205
  void intersect (const hb_bit_set_invertible_t &other)
206
0
  {
207
0
    if (likely (inverted == other.inverted))
208
0
    {
209
0
      if (unlikely (inverted))
210
0
  process (hb_bitwise_or, other);
211
0
      else
212
0
  process (hb_bitwise_and, other); /* Main branch. */
213
0
    }
214
0
    else
215
0
    {
216
0
      if (unlikely (inverted))
217
0
  process (hb_bitwise_lt, other);
218
0
      else
219
0
  process (hb_bitwise_gt, other);
220
0
    }
221
0
    if (likely (s.successful))
222
0
      inverted = inverted && other.inverted;
223
0
  }
224
  void subtract (const hb_bit_set_invertible_t &other)
225
128k
  {
226
128k
    if (likely (inverted == other.inverted))
227
128k
    {
228
128k
      if (unlikely (inverted))
229
0
  process (hb_bitwise_lt, other);
230
128k
      else
231
128k
  process (hb_bitwise_gt, other); /* Main branch. */
232
128k
    }
233
0
    else
234
0
    {
235
0
      if (unlikely (inverted))
236
0
  process (hb_bitwise_or, other);
237
0
      else
238
0
  process (hb_bitwise_and, other);
239
0
    }
240
128k
    if (likely (s.successful))
241
128k
      inverted = inverted && !other.inverted;
242
128k
  }
243
  void symmetric_difference (const hb_bit_set_invertible_t &other)
244
0
  {
245
0
    process (hb_bitwise_xor, other);
246
0
    if (likely (s.successful))
247
0
      inverted = inverted ^ other.inverted;
248
0
  }
249
250
  bool next (hb_codepoint_t *codepoint) const
251
1.51G
  {
252
1.51G
    if (likely (!inverted))
253
1.51G
      return s.next (codepoint);
254
255
0
    auto old = *codepoint;
256
0
    if (unlikely (old + 1 == INVALID))
257
0
    {
258
0
      *codepoint = INVALID;
259
0
      return false;
260
0
    }
261
262
0
    auto v = old;
263
0
    s.next (&v);
264
0
    if (old + 1 < v)
265
0
    {
266
0
      *codepoint = old + 1;
267
0
      return true;
268
0
    }
269
270
0
    v = old;
271
0
    s.next_range (&old, &v);
272
273
0
    *codepoint = v + 1;
274
0
    return *codepoint != INVALID;
275
0
  }
276
  bool previous (hb_codepoint_t *codepoint) const
277
216k
  {
278
216k
    if (likely (!inverted))
279
216k
      return s.previous (codepoint);
280
281
0
    auto old = *codepoint;
282
0
    if (unlikely (old - 1 == INVALID))
283
0
    {
284
0
      *codepoint = INVALID;
285
0
      return false;
286
0
    }
287
288
0
    auto v = old;
289
0
    s.previous (&v);
290
291
0
    if (old - 1 > v || v == INVALID)
292
0
    {
293
0
      *codepoint = old - 1;
294
0
      return true;
295
0
    }
296
297
0
    v = old;
298
0
    s.previous_range (&v, &old);
299
300
0
    *codepoint = v - 1;
301
0
    return *codepoint != INVALID;
302
0
  }
303
  bool next_range (hb_codepoint_t *first, hb_codepoint_t *last) const
304
104k
  {
305
104k
    if (likely (!inverted))
306
104k
      return s.next_range (first, last);
307
308
0
    if (!next (last))
309
0
    {
310
0
      *last = *first = INVALID;
311
0
      return false;
312
0
    }
313
314
0
    *first = *last;
315
0
    s.next (last);
316
0
    --*last;
317
0
    return true;
318
0
  }
319
  bool previous_range (hb_codepoint_t *first, hb_codepoint_t *last) const
320
0
  {
321
0
    if (likely (!inverted))
322
0
      return s.previous_range (first, last);
323
324
0
    if (!previous (first))
325
0
    {
326
0
      *last = *first = INVALID;
327
0
      return false;
328
0
    }
329
330
0
    *last = *first;
331
0
    s.previous (first);
332
0
    ++*first;
333
0
    return true;
334
0
  }
335
336
  unsigned int next_many (hb_codepoint_t  codepoint,
337
        hb_codepoint_t *out,
338
        unsigned int    size) const
339
0
  {
340
0
    return inverted ? s.next_many_inverted (codepoint, out, size)
341
0
        : s.next_many (codepoint, out, size);
342
0
  }
343
344
  static constexpr hb_codepoint_t INVALID = hb_bit_set_t::INVALID;
345
346
  /*
347
   * Iterator implementation.
348
   */
349
  struct iter_t : hb_iter_with_fallback_t<iter_t, hb_codepoint_t>
350
  {
351
    static constexpr bool is_sorted_iterator = true;
352
    static constexpr bool has_fast_len = true;
353
    iter_t (const hb_bit_set_invertible_t &s_ = Null (hb_bit_set_invertible_t),
354
3.79M
      bool init = true) : s (&s_), v (INVALID), l(0)
355
3.79M
    {
356
3.79M
      if (init)
357
2.62M
      {
358
2.62M
  l = s->get_population () + 1;
359
2.62M
  __next__ ();
360
2.62M
      }
361
3.79M
    }
362
363
    typedef hb_codepoint_t __item_t__;
364
1.14G
    hb_codepoint_t __item__ () const { return v; }
365
1.16G
    bool __more__ () const { return v != INVALID; }
366
1.11G
    void __next__ () { s->next (&v); if (likely (l)) l--; }
367
0
    void __prev__ () { s->previous (&v); l++; }
368
30.9k
    unsigned __len__ () const { return l; }
369
1.17M
    iter_t end () const { return iter_t (*s, false); }
370
    bool operator != (const iter_t& o) const
371
303M
    { return v != o.v || s != o.s; }
372
373
    protected:
374
    const hb_bit_set_invertible_t *s;
375
    hb_codepoint_t v;
376
    unsigned l;
377
  };
378
0
  iter_t iter () const { return iter_t (*this); }
379
0
  operator iter_t () const { return iter (); }
380
};
381
382
383
#endif /* HB_BIT_SET_INVERTIBLE_HH */