source: proto/u8u16/u8u16_pablo_straight.py @ 5928

Last change on this file since 5928 was 1866, checked in by cameron, 8 years ago

Eliminate semicolons

File size: 3.5 KB
Line 
1# -*- coding: utf-8 -*-
2
3def main():
4        u8_unibyte = (~bit[0])
5        u8_prefix = (bit[0] & bit[1])
6        u8_prefix2 = (u8_prefix &~ bit[2])
7        temp1 = (bit[2] &~ bit[3])
8        u8_prefix3 = (u8_prefix & temp1)
9        temp2 = (bit[2] & bit[3])
10        u8_prefix4 = (u8_prefix & temp2)
11        u8_suffix = (bit[0] &~ bit[1])
12        temp3 = (bit[2] | bit[3])
13        temp4 = (u8_prefix &~ temp3)
14        temp5 = (bit[4] | bit[5])
15        temp6 = (temp5 | bit[6])
16        temp7 = (temp4 &~ temp6)
17        temp8 = (bit[6] | bit[7])
18        temp9 = (bit[5] & temp8)
19        temp10 = (bit[4] | temp9)
20        temp11 = (u8_prefix4 & temp10)
21        u8_badprefix = (temp7 | temp11)
22        temp12 = (temp5 | temp8)
23        xE0 = (u8_prefix3 &~ temp12)
24        temp13 = (bit[4] & bit[5])
25        temp14 = (bit[7] &~ bit[6])
26        temp15 = (temp13 & temp14)
27        xED = (u8_prefix3 & temp15)
28        xF0 = (u8_prefix4 &~ temp12)
29        temp16 = (bit[5] &~ bit[4])
30        temp17 = (temp16 &~ temp8)
31        xF4 = (u8_prefix4 & temp17)
32        xA0_xBF = (u8_suffix & bit[2])
33        x80_x9F = (u8_suffix &~ bit[2])
34        x90_xBF = (u8_suffix & temp3)
35        x80_x8F = (u8_suffix &~ temp3)
36
37      #
38        u8_scope22 = pablo.Advance(u8_prefix2)
39        u8_scope32 = pablo.Advance(u8_prefix3)
40        u8_scope33 = pablo.Advance(u8_scope32)
41        u8_scope42 = pablo.Advance(u8_prefix4)
42        u8_scope43 = pablo.Advance(u8_scope42)
43        u8_scope44 = pablo.Advance(u8_scope43)
44        u8lastscope = u8_scope22 | u8_scope33 | u8_scope44
45        u8anyscope = u8lastscope | u8_scope32 | u8_scope42 | u8_scope43
46
47        adv_bit2 = pablo.Advance(bit[2])
48        adv_bit3 = pablo.Advance(bit[3])
49        adv_bit4 = pablo.Advance(bit[4])
50        adv_bit5 = pablo.Advance(bit[5])
51        adv_bit6 = pablo.Advance(bit[6])
52        adv_bit7 = pablo.Advance(bit[7])
53             
54        # C0-C1 and F5-FF are illegal
55        error_mask = u8_badprefix
56             
57        error_mask |= pablo.Advance(xE0) & x80_x9F
58        error_mask |= pablo.Advance(xED) & xA0_xBF
59        error_mask |= pablo.Advance(xF0) & x80_x8F
60        error_mask |= pablo.Advance(xF4) & x90_xBF
61             
62        error_mask |= u8anyscope ^ u8_suffix
63        u8_error = error_mask
64        u8lastbyte = u8_unibyte | u8lastscope
65        u16lo[2] = u8lastbyte & bit[2]
66        u16lo[3] = u8lastbyte & bit[3]
67        u16lo[4] = u8lastbyte & bit[4]
68        u16lo[5] = u8lastbyte & bit[5]
69        u16lo[6] = u8lastbyte & bit[6]
70        u16lo[7] = u8lastbyte & bit[7]
71        u16lo[1] = (u8_unibyte & bit[1]) | (u8lastscope & adv_bit7)
72        u16lo[0] = u8lastscope & adv_bit6
73       
74        u16hi[5] = u8lastscope & adv_bit3
75        u16hi[6] = u8lastscope & adv_bit4
76        u16hi[7] = u8lastscope & adv_bit5
77        advadv_bit6 = pablo.Advance(adv_bit6)
78        advadv_bit7 = pablo.Advance(adv_bit7)
79        u16hi[0] = u8_scope33 & pablo.Advance(adv_bit4)
80        u16hi[1] = u8_scope33 & pablo.Advance(adv_bit5)
81        u16hi[2] = u8_scope33 & pablo.Advance(adv_bit6)
82        u16hi[3] = u8_scope33 & pablo.Advance(adv_bit7)
83        u16hi[4] = u8_scope33 & adv_bit2
84
85        u8surrogate = u8_scope43 | u8_scope44
86        u16hi[0] = u16hi[0] | u8surrogate       
87        u16hi[1] = u16hi[1] | u8surrogate       
88        u16hi[3] = u16hi[3] | u8surrogate       
89        u16hi[4] = u16hi[4] | u8surrogate       
90        u16hi[5] = u16hi[5] | u8_scope44
91
92
93        s43lo1 = ~adv_bit3 # subtract 1
94        u16lo[1] = u16lo[1] | u8_scope43 & s43lo1
95        s43lo0 = adv_bit2 ^ s43lo1 # borrow *
96        u16lo[0] = u16lo[0] | u8_scope43 & s43lo0
97        s43borrow1 = s43lo1 & ~adv_bit2
98        s43hi7 = advadv_bit7 ^ s43borrow1
99        s43borrow2 = s43borrow1 & ~advadv_bit7
100        s43hi6 = advadv_bit6 ^ s43borrow2
101
102
103
104
105        u16hi[7]= u16hi[7] | (u8_scope43 & s43hi7)
106        u16hi[6] = u16hi[6] | (u8_scope43 & s43hi6)
107
108        u16lo[2] = u16lo[2] | (u8_scope43 & adv_bit4)
109        u16lo[3] = u16lo[3] | (u8_scope43 & adv_bit5)
110        u16lo[4] = u16lo[4] | (u8_scope43 & adv_bit6)
111        u16lo[5] = u16lo[5] | (u8_scope43 & adv_bit7)
112        u16lo[6] = u16lo[6] | (u8_scope43 & bit[2])
113        u16lo[7] = u16lo[7] | (u8_scope43 & bit[3])
114
115        delmask = u8_prefix | u8_scope32 | u8_scope42
116
Note: See TracBrowser for help on using the repository browser.