aboutsummaryrefslogtreecommitdiff
path: root/utf82codenumber.pd
blob: d02aa5f0ecc7b62231b092385502dcc7bbf67867 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#N canvas 400 289 649 526 10;
#X obj 131 172 inlet byte;
#X obj 131 316 outlet byte;
#N canvas 327 0 739 602 shifter 0;
#X obj 166 330 list split 1;
#X obj 166 277 until;
#X obj 166 305 list append;
#X obj 266 330 bang;
#X obj 166 356 +;
#X obj 166 409 t f f;
#X obj 166 254 t b l b;
#X msg 215 375 0;
#X obj 166 380 << 6;
#X obj 166 431 >> 6;
#X obj 134 469 f;
#X obj 134 208 t b l;
#X obj 134 169 inlet multibytelist;
#X obj 134 497 outlet bytestream;
#X text 74 60 converts a correctly-sized multi-byte list into a single
code-point \, by shifting and adding the elements appropriately.;
#X text 77 108 header-bits (e.g. bits not carrying any pay-load) MUST
be stripped off beforehand.;
#X connect 0 0 4 0;
#X connect 0 1 2 1;
#X connect 0 2 3 0;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 0 1 1;
#X connect 4 0 8 0;
#X connect 5 0 9 0;
#X connect 5 1 4 1;
#X connect 6 0 1 0;
#X connect 6 1 2 1;
#X connect 6 2 7 0;
#X connect 7 0 4 1;
#X connect 8 0 5 0;
#X connect 9 0 10 1;
#X connect 10 0 13 0;
#X connect 11 0 10 0;
#X connect 11 1 6 0;
#X connect 12 0 11 0;
#X restore 131 283 pd shifter;
#X text 222 316 unicode code number;
#X text 215 170 UTF-8 multibyte;
#N canvas 272 0 977 874 stream2multibytelist 0;
#X text 259 228 aux;
#X text 393 231 2byte;
#X text 456 233 3byte;
#X text 526 233 4byte;
#X text 180 232 1byte;
#X obj 181 249 & 127;
#X obj 391 249 & 31;
#X obj 251 249 & 63;
#X obj 460 249 & 15;
#X obj 530 249 & 7;
#X obj 251 270 t f b;
#X msg 213 292 1;
#X obj 248 581 t l l;
#X obj 181 613 list prepend;
#X msg 423 294 2;
#X obj 181 271 t f b;
#X obj 391 270 t f b;
#X obj 460 273 t f b;
#X msg 492 297 3;
#X obj 530 271 t f b;
#X msg 562 295 4;
#X obj 248 555 list prepend;
#X obj 181 207 moses 128;
#X obj 251 207 moses 192;
#X obj 391 207 moses 224;
#X obj 460 207 moses 240;
#X obj 329 534 t b b;
#X obj 181 689 outlet multibytelist;
#X obj 181 154 inlet bytestream;
#X obj 456 683 outlet error;
#X text 58 35 converts a bytestream into atomic multibyte representations
(aka "list"s) of characters.;
#X text 63 69 header-bits (used for describing the multibyte-nature
in the incoming stream) are stripped of the lists);
#X text 521 479 errors:;
#X text 550 502 a continuation-byte at the beginning;
#X text 550 518 a continuation-byte after the last byte;
#X text 550 542 a start-byte within a sequence;
#X text 555 587 192-193: overlong encoding;
#X text 555 618 245-253: restricted by RFC-3629;
#X text 556 637 254-255: not defined;
#X obj 530 207 moses 245;
#X obj 590 238 t b;
#X text 653 243 5byte \, 6byte;
#X text 653 229 codepoint > 0x10FFFF;
#X text 653 259 undefined;
#X obj 520 634 t b;
#X obj 181 181 t f f;
#X obj 181 643 t l b;
#N canvas 234 245 992 588 multibyte 0;
#X obj 70 66 inlet byte;
#X obj 313 61 inlet newlength;
#X obj 115 543 outlet byte|bang;
#X text 246 539 byte: append byte to list;
#X text 247 556 bang: list has finished;
#X obj 527 464 outlet error;
#X obj 527 175 select 0;
#X text 577 206 unexpected byte (continuation-byte at beginning);
#X obj 70 100 pack 0 0;
#X msg 132 100 0;
#X obj 70 258 select 0;
#X text 148 263 state: 0=expect new sequence;
#X text 199 280 1=expect continuation;
#X obj 70 196 == 0;
#X text 76 214 0=newbyte;
#X text 76 227 1==contbyte;
#X text 605 312 overlong;
#X obj 115 483 f;
#X obj 70 145 swap;
#X obj 70 168 t f f;
#X obj 70 279 f;
#X obj 70 308 select 0;
#X obj 70 347 i;
#X obj 99 347 - 1;
#X obj 70 390 select 1;
#X obj 70 413 t b b;
#X msg 185 350 0;
#X obj 121 328 t f b;
#X msg 153 349 1;
#X obj 185 372 t f;
#X obj 330 383 < 1;
#X obj 330 408 select 1;
#X obj 70 121 t l b l;
#X obj 549 317 t b b;
#X obj 527 213 t b b;
#X obj 70 369 t f b f;
#X obj 116 509 t a a;
#X obj 527 422 t b b;
#X text 79 30 now this is a bit overcomplicated....;
#X connect 0 0 8 0;
#X connect 1 0 8 1;
#X connect 6 0 34 0;
#X connect 8 0 32 0;
#X connect 9 0 8 1;
#X connect 10 0 20 0;
#X connect 10 1 34 0;
#X connect 13 0 10 0;
#X connect 17 0 36 0;
#X connect 18 0 19 0;
#X connect 18 1 17 1;
#X connect 19 0 13 0;
#X connect 19 1 20 1;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 21 1 27 0;
#X connect 22 0 23 0;
#X connect 22 0 35 0;
#X connect 23 0 22 1;
#X connect 24 0 25 0;
#X connect 24 1 30 0;
#X connect 25 0 36 0;
#X connect 25 1 26 0;
#X connect 26 0 29 0;
#X connect 27 0 22 0;
#X connect 27 1 28 0;
#X connect 28 0 29 0;
#X connect 29 0 10 1;
#X connect 30 0 31 0;
#X connect 31 0 33 0;
#X connect 32 0 18 0;
#X connect 32 1 9 0;
#X connect 33 0 37 0;
#X connect 34 0 37 0;
#X connect 35 0 24 0;
#X connect 35 1 17 0;
#X connect 36 0 2 0;
#X connect 37 0 5 0;
#X connect 37 1 26 0;
#X restore 181 424 pd multibyte;
#X obj 181 450 route bang;
#X obj 262 450 t b b;
#X obj 213 335 t f;
#X text 266 407 #expectedbytes;
#X text 233 371 byte;
#X obj 181 368 t f f;
#X obj 321 207 moses 194;
#X obj 521 582 t b;
#X connect 5 0 15 0;
#X connect 6 0 16 0;
#X connect 7 0 10 0;
#X connect 8 0 17 0;
#X connect 9 0 19 0;
#X connect 10 0 53 0;
#X connect 11 0 50 0;
#X connect 12 0 13 1;
#X connect 12 1 21 1;
#X connect 13 0 46 0;
#X connect 14 0 50 0;
#X connect 15 0 53 0;
#X connect 15 1 11 0;
#X connect 16 0 53 0;
#X connect 16 1 14 0;
#X connect 17 0 53 0;
#X connect 17 1 18 0;
#X connect 18 0 50 0;
#X connect 19 0 53 0;
#X connect 19 1 20 0;
#X connect 20 0 50 0;
#X connect 21 0 12 0;
#X connect 22 0 5 0;
#X connect 22 1 23 0;
#X connect 23 0 7 0;
#X connect 23 1 54 0;
#X connect 24 0 6 0;
#X connect 24 1 25 0;
#X connect 25 0 8 0;
#X connect 25 1 39 0;
#X connect 26 0 21 1;
#X connect 26 1 13 1;
#X connect 28 0 45 0;
#X connect 39 0 9 0;
#X connect 39 1 40 0;
#X connect 40 0 44 0;
#X connect 44 0 29 0;
#X connect 45 0 22 0;
#X connect 46 0 27 0;
#X connect 46 1 26 0;
#X connect 47 0 48 0;
#X connect 47 1 49 0;
#X connect 48 0 13 0;
#X connect 48 1 21 0;
#X connect 49 0 29 0;
#X connect 49 1 26 0;
#X connect 50 0 47 1;
#X connect 53 0 47 0;
#X connect 54 0 55 0;
#X connect 54 1 24 0;
#X connect 55 0 29 0;
#X restore 131 241 pd stream2multibytelist;
#X text 47 43 converts a stream of UTF-8 bytes into a stream of Unicode
code numbers;
#X text 53 95 multibyte characters are not output before the last byte
has been received;
#X obj 400 306 outlet error;
#X text 104 378 if the bytestream is invalid \, a message is sent to
the output;
#X text 77 479 (c) 2009 IOhannes m zmölnig & Maira Sala;
#X connect 0 0 5 0;
#X connect 2 0 1 0;
#X connect 5 0 2 0;
#X connect 5 1 8 0;