Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: third_party/harfbuzz-ng/src/hb-private.hh

Issue 205003003: Update harfbuzz-ng to 0.9.27 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: w/missing files Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-tag.cc ('k') | third_party/harfbuzz-ng/src/hb-set-private.hh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright © 2007,2008,2009 Red Hat, Inc. 2 * Copyright © 2007,2008,2009 Red Hat, Inc.
3 * Copyright © 2011,2012 Google, Inc. 3 * Copyright © 2011,2012 Google, Inc.
4 * 4 *
5 * This is part of HarfBuzz, a text shaping library. 5 * This is part of HarfBuzz, a text shaping library.
6 * 6 *
7 * Permission is hereby granted, without written agreement and without 7 * Permission is hereby granted, without written agreement and without
8 * license or royalty fees, to use, copy, modify, and distribute this 8 * license or royalty fees, to use, copy, modify, and distribute this
9 * software and its documentation for any purpose, provided that the 9 * software and its documentation for any purpose, provided that the
10 * above copyright notice and the following two paragraphs appear in 10 * above copyright notice and the following two paragraphs appear in
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 212
213 213
214 /* Return the number of 1 bits in mask. */ 214 /* Return the number of 1 bits in mask. */
215 static inline HB_CONST_FUNC unsigned int 215 static inline HB_CONST_FUNC unsigned int
216 _hb_popcount32 (uint32_t mask) 216 _hb_popcount32 (uint32_t mask)
217 { 217 {
218 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) 218 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
219 return __builtin_popcount (mask); 219 return __builtin_popcount (mask);
220 #else 220 #else
221 /* "HACKMEM 169" */ 221 /* "HACKMEM 169" */
222 register uint32_t y; 222 uint32_t y;
223 y = (mask >> 1) &033333333333; 223 y = (mask >> 1) &033333333333;
224 y = mask - y - ((y >>1) & 033333333333); 224 y = mask - y - ((y >>1) & 033333333333);
225 return (((y + (y >> 3)) & 030707070707) % 077); 225 return (((y + (y >> 3)) & 030707070707) % 077);
226 #endif 226 #endif
227 } 227 }
228 228
229 /* Returns the number of bits needed to store number */ 229 /* Returns the number of bits needed to store number */
230 static inline HB_CONST_FUNC unsigned int 230 static inline HB_CONST_FUNC unsigned int
231 _hb_bit_storage (unsigned int number) 231 _hb_bit_storage (unsigned int number)
232 { 232 {
233 #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__) 233 #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
234 return likely (number) ? (sizeof (unsigned int) * 8 - __builtin_clz (number)) : 0; 234 return likely (number) ? (sizeof (unsigned int) * 8 - __builtin_clz (number)) : 0;
235 #else 235 #else
236 register unsigned int n_bits = 0; 236 unsigned int n_bits = 0;
237 while (number) { 237 while (number) {
238 n_bits++; 238 n_bits++;
239 number >>= 1; 239 number >>= 1;
240 } 240 }
241 return n_bits; 241 return n_bits;
242 #endif 242 #endif
243 } 243 }
244 244
245 /* Returns the number of zero bits in the least significant side of number */ 245 /* Returns the number of zero bits in the least significant side of number */
246 static inline HB_CONST_FUNC unsigned int 246 static inline HB_CONST_FUNC unsigned int
247 _hb_ctz (unsigned int number) 247 _hb_ctz (unsigned int number)
248 { 248 {
249 #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__) 249 #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
250 return likely (number) ? __builtin_ctz (number) : 0; 250 return likely (number) ? __builtin_ctz (number) : 0;
251 #else 251 #else
252 register unsigned int n_bits = 0; 252 unsigned int n_bits = 0;
253 if (unlikely (!number)) return 0; 253 if (unlikely (!number)) return 0;
254 while (!(number & 1)) { 254 while (!(number & 1)) {
255 n_bits++; 255 n_bits++;
256 number >>= 1; 256 number >>= 1;
257 } 257 }
258 return n_bits; 258 return n_bits;
259 #endif 259 #endif
260 } 260 }
261 261
262 static inline bool 262 static inline bool
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 { 801 {
802 if ( ((lo^hi) & lo) == 0 && 802 if ( ((lo^hi) & lo) == 0 &&
803 ((lo^hi) & hi) == (lo^hi) && 803 ((lo^hi) & hi) == (lo^hi) &&
804 ((lo^hi) & ((lo^hi) + 1)) == 0 ) 804 ((lo^hi) & ((lo^hi) + 1)) == 0 )
805 return (u & ~(lo^hi)) == lo; 805 return (u & ~(lo^hi)) == lo;
806 else 806 else
807 return lo <= u && u <= hi; 807 return lo <= u && u <= hi;
808 } 808 }
809 809
810 template <typename T> static inline bool 810 template <typename T> static inline bool
811 hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2)
812 {
813 return hb_in_range (u, lo1, hi1) || hb_in_range (u, lo2, hi2);
814 }
815
816 template <typename T> static inline bool
811 hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3) 817 hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3)
812 { 818 {
813 return hb_in_range (u, lo1, hi1) || hb_in_range (u, lo2, hi2) || hb_in_range ( u, lo3, hi3); 819 return hb_in_range (u, lo1, hi1) || hb_in_range (u, lo2, hi2) || hb_in_range ( u, lo3, hi3);
814 } 820 }
815 821
816 822
817 /* Useful for set-operations on small enums. 823 /* Useful for set-operations on small enums.
818 * For example, for testing "x ∈ {x1, x2, x3}" use: 824 * For example, for testing "x ∈ {x1, x2, x3}" use:
819 * (FLAG(x) & (FLAG(x1) | FLAG(x2) | FLAG(x3))) 825 * (FLAG(x) & (FLAG(x1) | FLAG(x2) | FLAG(x3)))
820 */ 826 */
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 hb_options (void) 909 hb_options (void)
904 { 910 {
905 if (unlikely (!_hb_options.i)) 911 if (unlikely (!_hb_options.i))
906 _hb_options_init (); 912 _hb_options_init ();
907 913
908 return _hb_options.opts; 914 return _hb_options.opts;
909 } 915 }
910 916
911 917
912 #endif /* HB_PRIVATE_HH */ 918 #endif /* HB_PRIVATE_HH */
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-tag.cc ('k') | third_party/harfbuzz-ng/src/hb-set-private.hh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698