source: proto/u8u16/u8u16_pablo.py @ 1683

Last change on this file since 1683 was 1592, checked in by cameron, 8 years ago

Update u8u16 to work with new libraries

File size: 5.7 KB
Line 
1# -*- coding: utf-8 -*-
2
3class u8 ():
4  unibyte = 0
5  prefix = 0
6  prefix2 = 0
7  prefix3 = 0
8  prefix4 = 0
9  suffix = 0
10  scope22 = 0
11  scope32 = 0
12  scope33 = 0
13  scope42 = 0
14  scope43 = 0
15  scope44 = 0
16  xE0_scope = 0
17  xED_scope = 0
18  xF0_scope = 0
19  xF4_scope = 0
20  xEF_scope = 0
21  error = 0
22
23
24def main(u8, mask):
25        u8.unibyte = (~bit[0]);
26        u8.prefix = (bit[0] & bit[1]);
27        u8.prefix2 = (u8.prefix &~ bit[2]);
28        temp1 = (bit[2] &~ bit[3]);
29        u8.prefix3 = (u8.prefix & temp1);
30        temp2 = (bit[2] & bit[3]);
31        u8.prefix4 = (u8.prefix & temp2);
32        u8.suffix = (bit[0] &~ bit[1]);
33      #
34        delmask = 0
35        error_mask = 0
36        u8anyscope = 0
37        if bit[0]:
38                temp3 = (bit[2] | bit[3]);
39                temp4 = (u8.prefix &~ temp3);
40                temp5 = (bit[4] | bit[5]);
41                temp6 = (temp5 | bit[6]);
42                badprefix2 = (temp4 &~ temp6);
43                error_mask = badprefix2
44                u8.scope22 = pablo.Advance(u8.prefix2)
45                adv_bit3 = pablo.Advance(bit[3])
46                adv_bit4 = pablo.Advance(bit[4])
47                adv_bit5 = pablo.Advance(bit[5])
48                adv_bit6 = pablo.Advance(bit[6])
49                adv_bit7 = pablo.Advance(bit[7])
50                u8lastscope = u8.scope22
51                u8anyscope = u8.scope22
52                u8lastbyte = u8.unibyte | u8lastscope
53                delmask = u8.prefix
54                if u8.prefix3 | u8.prefix4:
55                        temp7 = (bit[6] | bit[7]);
56                        temp8 = (temp5 | temp7);
57                        xE0 = (u8.prefix3 &~ temp8);
58                        temp9 = (bit[4] & bit[5]);
59                        temp10 = (bit[7] &~ bit[6]);
60                        temp11 = (temp9 & temp10);
61                        xED = (u8.prefix3 & temp11);
62                        xA0_xBF = (u8.suffix & bit[2]);
63                        x80_x9F = (u8.suffix &~ bit[2]);
64                        error_mask |= pablo.Advance(xE0) & x80_x9F
65                        error_mask |= pablo.Advance(xED) & xA0_xBF
66                        u8.scope32 = pablo.Advance(u8.prefix3)
67                        u8.scope33 = pablo.Advance(u8.scope32)
68                        adv_bit2 = pablo.Advance(bit[2])
69                        advadv_bit4 = pablo.Advance(adv_bit4)
70                        advadv_bit5 = pablo.Advance(adv_bit5)
71                        advadv_bit6 = pablo.Advance(adv_bit6)
72                        advadv_bit7 = pablo.Advance(adv_bit7)
73                        u8lastscope |= u8.scope33
74                        u8anyscope = u8lastscope | u8.scope32
75                        u8lastbyte = u8.unibyte | u8lastscope
76                        delmask |= u8.scope32
77                        if u8.prefix4:
78                                temp12 = (bit[5] & temp7);
79                                temp13 = (bit[4] | temp12);
80                                badprefix4 = (u8.prefix4 & temp13);
81                                error_mask |= badprefix4
82                                xF0 = (u8.prefix4 &~ temp8);
83                                temp14 = (bit[5] &~ bit[4]);
84                                temp15 = (temp14 &~ temp7);
85                                xF4 = (u8.prefix4 & temp15);
86                                x90_xBF = (u8.suffix & temp3);
87                                x80_x8F = (u8.suffix &~ temp3);
88                                error_mask |= pablo.Advance(xF0) & x80_x8F
89                                error_mask |= pablo.Advance(xF4) & x90_xBF
90                                u8.scope42 = pablo.Advance(u8.prefix4)
91                                u8.scope43 = pablo.Advance(u8.scope42)
92                                u8.scope44 = pablo.Advance(u8.scope43)
93                                u8surrogate = u8.scope43 | u8.scope44
94                                u8lastscope |= u8.scope44
95                                u8anyscope = u8lastscope | u8.scope32 | u8.scope42 | u8.scope43
96                                u8lastbyte = u8.unibyte | u8lastscope
97                                delmask |= u8.scope42
98                                u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
99                                u16lo[0] = u8lastscope & adv_bit6
100                                u16hi[5] = u8lastscope & adv_bit3
101                                u16hi[6] = u8lastscope & adv_bit4
102                                u16hi[7] = u8lastscope & adv_bit5
103                                u16hi[0] = u8.scope33 & advadv_bit4 | u8surrogate       
104                                u16hi[1] = u8.scope33 & advadv_bit5 | u8surrogate
105                                u16hi[2] = u8.scope33 & advadv_bit6
106                                u16hi[3] = u8.scope33 & advadv_bit7 | u8surrogate       
107                                u16hi[4] = u8.scope33 & adv_bit2 | u8surrogate 
108                                u16hi[5] = u8lastscope & adv_bit3 | u8.scope44
109                                s43lo1 = ~adv_bit3 # subtract 1
110                                u16lo[1] = u16lo[1] | u8.scope43 & s43lo1
111                                s43lo0 = adv_bit2 ^ s43lo1 # borrow *
112                                u16lo[0] = u16lo[0] | u8.scope43 & s43lo0
113                                s43borrow1 = s43lo1 & ~adv_bit2
114                                s43hi7 = advadv_bit7 ^ s43borrow1
115                                s43borrow2 = s43borrow1 & ~advadv_bit7
116                                s43hi6 = advadv_bit6 ^ s43borrow2
117                                u16hi[7] = u8lastscope & adv_bit5 | (u8.scope43 & s43hi7)
118                                u16hi[6] = u8lastscope & adv_bit4 | (u8.scope43 & s43hi6)
119                                u16lo[2] = u8lastbyte & bit[2] | (u8.scope43 & adv_bit4)
120                                u16lo[3] = u8lastbyte & bit[3] | (u8.scope43 & adv_bit5)
121                                u16lo[4] = u8lastbyte & bit[4] | (u8.scope43 & adv_bit6)
122                                u16lo[5] = u8lastbyte & bit[5] | (u8.scope43 & adv_bit7)
123                                u16lo[6] = u8lastbyte & bit[6] | (u8.scope43 & bit[2])
124                                u16lo[7] = u8lastbyte & bit[7] | (u8.scope43 & bit[3])
125                        else:
126                                u8.scope42 = 0
127                                u8.scope43 = 0
128                                u8.scope44 = 0
129                                u16hi[0] = u8.scope33 & advadv_bit4
130                                u16hi[1] = u8.scope33 & advadv_bit5
131                                u16hi[2] = u8.scope33 & advadv_bit6
132                                u16hi[3] = u8.scope33 & advadv_bit7
133                                u16hi[4] = u8.scope33 & adv_bit2
134                                u16hi[5] = u8lastscope & adv_bit3
135                                u16hi[6] = u8lastscope & adv_bit4
136                                u16hi[7] = u8lastscope & adv_bit5
137                                u16lo[2] = u8lastbyte & bit[2]
138                                u16lo[3] = u8lastbyte & bit[3]
139                                u16lo[4] = u8lastbyte & bit[4]
140                                u16lo[5] = u8lastbyte & bit[5]
141                                u16lo[6] = u8lastbyte & bit[6]
142                                u16lo[7] = u8lastbyte & bit[7]
143                                u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
144                                u16lo[0] = u8lastscope & adv_bit6
145                else:
146                        u8.scope32 = 0
147                        u8.scope33 = 0
148                        u8.scope42 = 0
149                        u8.scope43 = 0
150                        u8.scope44 = 0
151                        u16hi[0] = 0
152                        u16hi[1] = 0
153                        u16hi[2] = 0
154                        u16hi[3] = 0
155                        u16hi[4] = 0
156                        u16hi[5] = u8lastscope & adv_bit3
157                        u16hi[6] = u8lastscope & adv_bit4
158                        u16hi[7] = u8lastscope & adv_bit5
159                        u16lo[2] = u8lastbyte & bit[2]
160                        u16lo[3] = u8lastbyte & bit[3]
161                        u16lo[4] = u8lastbyte & bit[4]
162                        u16lo[5] = u8lastbyte & bit[5]
163                        u16lo[6] = u8lastbyte & bit[6]
164                        u16lo[7] = u8lastbyte & bit[7]
165                        u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
166                        u16lo[0] = u8lastscope & adv_bit6
167        else:
168                u8.scope22 = 0
169                u8.scope32 = 0
170                u8.scope33 = 0
171                u8.scope42 = 0
172                u8.scope43 = 0
173                u8.scope44 = 0
174                u16hi[0] = 0
175                u16hi[1] = 0
176                u16hi[2] = 0
177                u16hi[3] = 0
178                u16hi[4] = 0
179                u16hi[5] = 0
180                u16hi[6] = 0
181                u16hi[7] = 0
182                u16lo[2] = bit[2]
183                u16lo[3] = bit[3]
184                u16lo[4] = bit[4]
185                u16lo[5] = bit[5]
186                u16lo[6] = bit[6]
187                u16lo[7] = bit[7]
188                u16lo[1] = bit[1]
189                u16lo[0] = 0
190        error_mask |= u8anyscope ^ u8.suffix
191        u8.error = error_mask
192
Note: See TracBrowser for help on using the repository browser.