This source file includes following definitions.
- bitmap_lookup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 static inline int bitmap_lookup (const void *table, ucs4_t uc);
19
20
21
22 #define header_0 16
23 #define header_2 9
24 #define header_3 127
25 #define header_4 15
26
27 static inline int
28 bitmap_lookup (const void *table, ucs4_t uc)
29 {
30 unsigned int index1 = uc >> header_0;
31 if (index1 < ((const int *) table)[0])
32 {
33 int lookup1 = ((const int *) table)[1 + index1];
34 if (lookup1 >= 0)
35 {
36 unsigned int index2 = (uc >> header_2) & header_3;
37 int lookup2 = ((const short *) table)[lookup1 + index2];
38 if (lookup2 >= 0)
39 {
40 unsigned int index3 = (uc >> 5) & header_4;
41 unsigned int lookup3 = ((const unsigned int *) table)[lookup2 + index3];
42
43 return (lookup3 >> (uc & 0x1f)) & 1;
44 }
45 }
46 }
47 return 0;
48 }