27 #ifndef HB_SET_DIGEST_HH
28 #define HB_SET_DIGEST_HH
48 template <
typename mask_t,
unsigned int shift>
52 static constexpr
unsigned mask_bits =
sizeof (mask_t) * 8;
73 mask_t ma = mask_for (
a);
74 mask_t mb = mask_for (
b);
75 mask |= mb + (mb - ma) - (mb < ma);
83 for (
unsigned int i = 0;
i <
count;
i++)
94 for (
unsigned int i = 0;
i <
count;
i++)
101 template <
typename T>
105 {
return !!(
mask & mask_for (
g)); }
114 template <
typename head_t,
typename tail_t>
131 head.add_range (
a,
b);
132 tail.add_range (
a,
b);
135 template <
typename T>
141 template <
typename T>
143 template <
typename T>
150 template <
typename T>
155 return head.may_have (
g) && tail.may_have (
g);
small capitals from c petite p scientific i
[1]
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLenum GLsizei count
const void GLsizei GLsizei stride
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
bool add_range(hb_codepoint_t a, hb_codepoint_t b)
bool add_sorted_array(const T *array, unsigned int count, unsigned int stride=sizeof(T))
void add(hb_codepoint_t g)
void add_array(const T *array, unsigned int count, unsigned int stride=sizeof(T))
bool add_sorted_array(const hb_sorted_array_t< const T > &arr)
void add_array(const hb_array_t< const T > &arr)
bool may_have(hb_codepoint_t g) const
bool add_sorted_array(const hb_sorted_array_t< const T > &arr)
bool add_sorted_array(const T *array, unsigned int count, unsigned int stride=sizeof(T))
void add_array(const T *array, unsigned int count, unsigned int stride=sizeof(T))
void add_array(const hb_array_t< const T > &arr)
void add(hb_codepoint_t g)
bool add_range(hb_codepoint_t a, hb_codepoint_t b)
bool may_have(hb_codepoint_t g) const
static constexpr unsigned mask_bytes
static constexpr unsigned mask_bits
static constexpr unsigned num_bits