28 #ifndef HB_BIT_SET_INVERTIBLE_HH
29 #define HB_BIT_SET_INVERTIBLE_HH
47 if (
likely (!
a.s.successful || !
b.s.successful))
49 hb_swap (
a.inverted,
b.inverted);
57 explicit operator bool ()
const {
return !
is_empty (); }
102 template <
typename T>
105 template <
typename T>
110 template <
typename T>
113 template <
typename T>
132 {
add (
v);
return *
this; }
139 return next (&
c) &&
c <= last;
152 return s.is_equal (
other.s);
157 auto it2 =
other.iter ();
158 return hb_all (+ hb_zip (it1, it2)
166 return hb_all (hb_iter (
s) |
hb_map (larger_set.
s));
172 template <
typename Op>
243 return s.next (codepoint);
245 auto old = *codepoint;
256 *codepoint = old + 1;
261 s.next_range (&old, &
v);
269 return s.previous (codepoint);
271 auto old = *codepoint;
283 *codepoint = old - 1;
288 s.previous_range (&
v, &old);
296 return s.next_range (
first, last);
312 return s.previous_range (
first, last);
328 unsigned int size)
const
331 :
s.next_many (codepoint,
out,
size);
347 l =
s->get_population () + 1;
360 {
return s !=
o.
s ||
v !=
o.v; }
auto it hb_map(hb_second)) template< typename Type > inline hb_array_t< Type > operator()(hb_array_t< Type > array
set set set set set set set macro pixldst1 op
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLsizei count
const void GLsizei GLsizei stride
QTextStream out(stdout)
[7]
static constexpr bool is_sorted_iterator
iter_t(const hb_bit_set_invertible_t &s_=Null(hb_bit_set_invertible_t), bool init=true)
hb_codepoint_t __item__() const
const hb_bit_set_invertible_t * s
hb_codepoint_t __item_t__
bool operator!=(const iter_t &o) const
bool is_subset(const hb_bit_set_invertible_t &larger_set) const
hb_bit_set_invertible_t(hb_bit_set_invertible_t &o)=default
void del(hb_codepoint_t g)
bool previous_range(hb_codepoint_t *first, hb_codepoint_t *last) const
hb_codepoint_t get_min() const
hb_bit_set_invertible_t & operator<<(hb_codepoint_t v)
bool next_range(hb_codepoint_t *first, hb_codepoint_t *last) const
bool add_sorted_array(const T *array, unsigned int count, unsigned int stride=sizeof(T))
void set(const hb_bit_set_invertible_t &other)
void intersect(const hb_bit_set_invertible_t &other)
static constexpr hb_codepoint_t INVALID
hb_bit_set_invertible_t(hb_bit_set_invertible_t &&o)=default
bool has(hb_codepoint_t k) const
bool previous(hb_codepoint_t *codepoint) const
unsigned int next_many(hb_codepoint_t codepoint, hb_codepoint_t *out, unsigned int size) const
bool intersects(hb_codepoint_t first, hb_codepoint_t last) const
void add_array(const T *array, unsigned int count, unsigned int stride=sizeof(T))
bool next(hb_codepoint_t *codepoint) const
bool operator()(hb_codepoint_t k) const
hb_codepoint_t get_max() const
bool is_equal(const hb_bit_set_invertible_t &other) const
void subtract(const hb_bit_set_invertible_t &other)
void process(const Op &op, const hb_bit_set_invertible_t &other)
void symmetric_difference(const hb_bit_set_invertible_t &other)
void del_range(hb_codepoint_t a, hb_codepoint_t b)
unsigned int get_population() const
friend void swap(hb_bit_set_invertible_t &a, hb_bit_set_invertible_t &b)
bool add_range(hb_codepoint_t a, hb_codepoint_t b)
bool add_sorted_array(const hb_sorted_array_t< const T > &arr)
bool get(hb_codepoint_t g) const
void add_array(const hb_array_t< const T > &arr)
void union_(const hb_bit_set_invertible_t &other)
hb_bit_set_invertible_t()=default
void add(hb_codepoint_t g)
hb_bit_set_invertible_t & operator=(const hb_bit_set_invertible_t &o)=default
value_t operator[](hb_codepoint_t k) const
static constexpr bool SENTINEL
static constexpr hb_codepoint_t INVALID
bool is_subset(const hb_bit_set_t &larger_set) const