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
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
| -- AAda Character Categories
-- This file was auto-generated, do not edit directly
with interfaces; use interfaces;
with ada.text_io; use ada.text_io;
with aada_compiler_ucs4_character; use aada_compiler_ucs4_character;
package body aada_character_categories is
type same is array(unsigned_32 range <>) of unsigned_32;
type full is array(unsigned_32 range 0 .. 23) of unsigned_32;
type data_type is
record
page: unsigned_32;
data: full;
end record;
type data_array is array(natural range <>) of data_type;
same_check: constant same(0 .. 23) := (
16#40220002#, 16#FFF00000#, 16#FFFFDFFF#, 16#FFFFFFFF#,
16#7FFFFFFF#, 16#FFFFF02F#, 16#7FFFFF#, 16#12000000#,
16#0#, 16#F0007#, 16#0#, 16#300#,
16#0#, 16#0#, 16#0#, 16#0#,
16#FFFFFFFF#, 16#FFFFFFFF#, 16#FFFFFFFF#, 16#FFFFFFFF#,
16#FFFFFFFF#, 16#7FFFBF#, 16#0#, 16#3000000#);
tables: constant data_array(1 .. 78) := (
(page => 0, data => (
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#B6DB2492#, 16#24925B6D#, 16#92492491#, 16#24924924#,
16#84929249#, 16#92492491#, 16#24924924#, 16#24929249#,
16#49249249#, 16#92492492#, 16#24924924#, 16#89249249#,
16#12492692#, 16#24928925#, 16#92492492#, 16#24924924#,
16#49249229#, 16#92492492#, 16#24924924#, 16#49249229#)),
(page => 2, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92489252#, 16#92524924#,
16#24924924#, 16#4924A492#, 16#924928A2#, 16#24924924#)),
(page => 3, data => (
16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#,
16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#,
16#6DB6DB6D#, 16#DB6DB6DB#, 16#A4926DB6#, 16#25248948#,
16#92289249#, 16#249248A2#, 16#49249249#, 16#92492452#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249245#)),
(page => 4, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#896DB652#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 5, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#49492492#,
16#24912492#, 16#49249249#, 16#92492492#, 16#24924924#,
16#24925129#, 16#92492491#, 16#24924924#, 16#49249249#,
16#49492492#, 16#B6D92492#, 16#6DB6DB6D#, 16#DB6DB6DB#,
16#B6DB6DB6#, 16#65B6DB6D#, 16#4965B2D9#, 16#24922492#,
16#49249249#, 16#92492492#, 16#92922492#, 16#24924924#)),
(page => 6, data => (
16#49249B6D#, 16#B6DB2492#, 16#2492DB6D#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#B6DB6DB6#,
16#6DB6DB6D#, 16#5B6DB6DB#, 16#24934892#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#14924924#,
16#66B6DB6D#, 16#CB6936DB#, 16#B6DB49B6#, 16#44A49B6D#)),
(page => 7, data => (
16#49249249#, 16#249AA492#, 16#49249249#, 16#92492492#,
16#B6DB4924#, 16#6DB6DB6D#, 16#DB6DB6DB#, 16#24924912#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#DB6D2492#,
16#92536DB6#, 16#24924924#, 16#9B6DB6DB#, 16#24924924#,
16#49249249#, 16#92492492#, 16#26DB6DB6#, 16#24928925#)),
(page => 8, data => (
16#92492492#, 16#24924924#, 16#6DB69B6D#, 16#DA6DA6DB#,
16#924925B6#, 16#24924924#, 16#92492492#, 16#24924924#,
16#2496DA49#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 9, data => (
16#924926DB#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#6D36D249#, 16#DB6DB6DB#, 16#B6DA6DB6#,
16#4924926D#, 16#DB6C96D2#, 16#24916DB6#, 16#49249149#,
16#924916D9#, 16#244A44A4#, 16#49249249#, 16#8A492492#,
16#928A4924#, 16#6D325248#, 16#4B64B6DB#, 16#924929B6#,
16#45224964#, 16#DB6C96D2#, 16#92526DB6#, 16#24924924#)),
(page => 10, data => (
16#924916D9#, 16#244A4492#, 16#49249249#, 16#8A492492#,
16#148A4924#, 16#6CB25229#, 16#4B6492DB#, 16#925925B6#,
16#28A49124#, 16#DB6C9249#, 16#A49B6DB6#, 16#24924925#,
16#924916D9#, 16#24524524#, 16#49249249#, 16#8A492492#,
16#148A4924#, 16#6D325249#, 16#5B65B6DB#, 16#924A25B6#,
16#24924924#, 16#DB6C96D2#, 16#92496DB6#, 16#24924924#)),
(page => 11, data => (
16#924916D9#, 16#244A44A4#, 16#49249249#, 16#8A492492#,
16#148A4924#, 16#6D325249#, 16#4B64B6DB#, 16#924925B6#,
16#4522496C#, 16#DB6C96D2#, 16#92516DB6#, 16#24924924#,
16#924914C9#, 16#248A4892#, 16#48A29125#, 16#9224A449#,
16#24924892#, 16#6C925249#, 16#CB6C92DB#, 16#924A25B6#,
16#24924964#, 16#DB6C9249#, 16#92496DB6#, 16#24924924#)),
(page => 12, data => (
16#924916D9#, 16#248A48A4#, 16#49249249#, 16#8A492492#,
16#14924924#, 16#6D125249#, 16#CB6CB6DB#, 16#924925B6#,
16#2492522D#, 16#DB6C96D2#, 16#92496DB6#, 16#24924924#,
16#924916C9#, 16#248A48A4#, 16#49249249#, 16#8A492492#,
16#14924924#, 16#6D325249#, 16#CB6CB6DB#, 16#924925B6#,
16#2892492D#, 16#DB6C96D2#, 16#92916DB6#, 16#24924924#)),
(page => 13, data => (
16#924916C9#, 16#248A48A4#, 16#49249249#, 16#92492492#,
16#24924924#, 16#6D129249#, 16#CB6CB6DB#, 16#924929B6#,
16#24924964#, 16#DB6C96D2#, 16#92496DB6#, 16#49248924#,
16#924916C9#, 16#24924924#, 16#49248929#, 16#92492492#,
16#24524924#, 16#25149249#, 16#C9292492#, 16#B6DB6492#,
16#6DB6DB2C#, 16#49249249#, 16#96C92492#, 16#24924924#)),
(page => 14, data => (
16#92492491#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B49A4924#, 16#2492DB6D#, 16#DB692492#, 16#B6DB2DB6#,
16#24925B6D#, 16#49249249#, 16#92492492#, 16#24924924#,
16#8A44A291#, 16#22492512#, 16#49249149#, 16#89451491#,
16#B49A4914#, 16#25365B6D#, 16#DB28A492#, 16#B6DB25B6#,
16#25225B6D#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 15, data => (
16#4924924A#, 16#92492492#, 16#24925B24#, 16#5B6DB6DB#,
16#92492492#, 16#6C925965#, 16#91492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#B6D924A4#, 16#6DB6DB6D#,
16#926CB6DB#, 16#B6DB6DA4#, 16#6DB6D96D#, 16#DB6DB6DB#,
16#B6DB6DB6#, 16#24B6DB6D#, 16#492C9249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 16, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B6DB6DB6#, 16#4DB6DB6D#, 16#5B6DB6DB#, 16#24922492#,
16#6D249B6D#, 16#DB6936D3#, 16#36DA49B6#, 16#49249249#,
16#DB6DB6D2#, 16#B6DB69B6#, 16#25B6DB6D#, 16#92492492#,
16#24924924#, 16#49249249#, 16#49252492#, 16#24922492#,
16#49249249#, 16#92492492#, 16#24924924#, 16#24A29249#)),
(page => 18, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#8A492492#, 16#24922524#,
16#25248A29#, 16#92492492#, 16#24924924#, 16#49249249#,
16#8A492492#, 16#24922524#, 16#49249249#, 16#92492492#,
16#248A4924#, 16#29249225#, 16#9225248A#, 16#24924924#,
16#49249229#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 19, data => (
16#92492492#, 16#248A4924#, 16#49249225#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#6D929249#, 16#49249249#, 16#92492492#, 16#24924924#,
16#92492492#, 16#92494924#, 16#24924924#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#A4924924#, 16#24924924#)),
(page => 20, data => (
16#92492491#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 22, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#249244A4#, 16#49249249#,
16#92492491#, 16#24924924#, 16#24929249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#924A4892#, 16#24924924#)),
(page => 23, data => (
16#92492492#, 16#B6D248A4#, 16#24924924#, 16#92492492#,
16#B6D24924#, 16#24924924#, 16#92492492#, 16#96D24924#,
16#24924924#, 16#92492492#, 16#96CA48A4#, 16#24924924#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#D4924924#, 16#6DB6DB6E#, 16#DB6DB6DB#, 16#96DB6DB6#,
16#25A24944#, 16#5B6DB6DB#, 16#92492492#, 16#24924924#)),
(page => 24, data => (
16#49249249#, 16#B6DB25B6#, 16#24925B6D#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#24924949#,
16#92492492#, 16#24924924#, 16#49249249#, 16#9A492492#,
16#24922492#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#24924925#)),
(page => 25, data => (
16#92492492#, 16#24924924#, 16#24A49249#, 16#DB6DB6DB#,
16#B6DB2496#, 16#2496DB6D#, 16#DB6C9249#, 16#24926DB6#,
16#49249249#, 16#92492492#, 16#A4922524#, 16#24924924#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B6DB2494#, 16#6DB6DB6D#, 16#5B492493#, 16#B6DB2492#,
16#24925B6D#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 26, data => (
16#92492492#, 16#24924924#, 16#2496DB69#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#A4924924#,
16#2DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#, 16#64B6DB6D#,
16#5B6DB6DB#, 16#B6DB2492#, 16#24925B6D#, 16#49449249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 27, data => (
16#924936DB#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B4924924#, 16#6DB6DB6D#, 16#924936DB#, 16#B6DB2494#,
16#24925B6D#, 16#49249249#, 16#96DB6DB6#, 16#24924924#,
16#924924DB#, 16#24924924#, 16#49249249#, 16#DB6DB6DA#,
16#B6DB4892#, 16#24925B6D#, 16#92492492#, 16#24924924#,
16#49249249#, 16#DB6D2492#, 16#96DB6DB6#, 16#24924924#)),
(page => 28, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#DB6DB492#,
16#B6DB6DB6#, 16#2492496D#, 16#5B6DB6DB#, 16#B6DB4912#,
16#49249B6D#, 16#92492492#, 16#24924924#, 16#25249249#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#B2DB2492#,
16#6DB6DB6D#, 16#936DB6DB#, 16#92D249A4#, 16#24924924#)),
(page => 29, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#DB6DB6DB#, 16#B6DB6DB6#,
16#6DB6DB6D#, 16#492DB6DB#, 16#92492492#, 16#6DB24924#)),
(page => 31, data => (
16#92492492#, 16#24924924#, 16#25249225#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92252492#, 16#24922524#,
16#45145149#, 16#92492492#, 16#24924924#, 16#25249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#A4924924#, 16#28A49248#, 16#9248A489#, 16#949224A4#,
16#24949248#, 16#92492492#, 16#A48924A4#, 16#24A49248#)),
(page => 32, data => (
16#49249249#, 16#9249B6DA#, 16#24924924#, 16#49249249#,
16#924936DB#, 16#84924924#, 16#4924924C#, 16#C2492492#,
16#24924924#, 16#4924DB6D#, 16#9251B6DB#, 16#44924924#,
16#49249249#, 16#24922492#, 16#24A49249#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#B6DB2492#,
16#24B6DB6D#, 16#DB6D9259#, 16#924B6DB6#, 16#24924924#)),
(page => 33, data => (
16#89449289#, 16#14924924#, 16#25249125#, 16#8A28A249#,
16#24924524#, 16#49225249#, 16#52491249#, 16#92492892#,
16#24924924#, 16#92492492#, 16#24924924#, 16#49249249#,
16#4A492492#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 44, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24922924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#29249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#4924A492#, 16#925B6924#, 16#24924924#)),
(page => 45, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#49252492#,
16#24922492#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#49252492#, 16#92494492#, 16#64924924#,
16#92492492#, 16#24924924#, 16#24924929#, 16#92292492#,
16#24922924#, 16#29249229#, 16#92292492#, 16#24922924#,
16#29249229#, 16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#)),
(page => 46, data => (
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92494492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 48, data => (
16#49491249#, 16#92492492#, 16#24924924#, 16#D2492491#,
16#24916DB6#, 16#24A49225#, 16#92492491#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#4912D929#, 16#92492491#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49229249#)),
(page => 49, data => (
16#92491249#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24912524#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#92492924#, 16#24924924#, 16#92492492#,
16#24924924#, 16#24929249#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#24922492#, 16#49249249#)),
(page => 77, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#24924925#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 159, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#92492494#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 164, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#924924A4#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#24922492#,
16#49249249#, 16#92492492#, 16#24924924#, 16#25249249#)),
(page => 166, data => (
16#92492492#, 16#249224A4#, 16#49249249#, 16#9B6DB6DB#,
16#92492494#, 16#24924924#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#92496924#, 16#45B24924#,
16#92492492#, 16#24924924#, 16#24924949#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#925B4924#, 16#24924924#)),
(page => 167, data => (
16#49249249#, 16#92492492#, 16#49249244#, 16#92492489#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#4A492492#, 16#92522924#, 16#24924924#, 16#52492492#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#49248924#)),
(page => 168, data => (
16#924D24D2#, 16#24924926#, 16#49249249#, 16#496DB692#,
16#92492492#, 16#24924924#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#94924924#, 16#24924924#,
16#9249249B#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B4924924#, 16#6DB6DB6D#, 16#4924B6DB#, 16#B6DB2492#,
16#24925B6D#, 16#DB6DB6DB#, 16#249B6DB6#, 16#24944949#)),
(page => 169, data => (
16#9B6DB6DB#, 16#24924924#, 16#49249249#, 16#DB6D2492#,
16#249225B6#, 16#49249249#, 16#DB692492#, 16#96DB6DB6#,
16#24924924#, 16#92492492#, 16#24924924#, 16#24A49249#,
16#924926DB#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B6924924#, 16#6DB6DB6D#, 16#4924924B#, 16#B6DB4492#,
16#24925B6D#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 170, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#DA492492#,
16#B6DB6DB6#, 16#2492492D#, 16#92492692#, 16#B6DB25B4#,
16#24925B6D#, 16#92492492#, 16#24924924#, 16#24968929#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#36D34924#, 16#6D249369#, 16#4924929A#, 16#92492492#,
16#25244924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 171, data => (
16#91292491#, 16#24912924#, 16#24924929#, 16#92292492#,
16#92492924#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#92492492#, 16#24924924#,
16#49249249#, 16#DB6DB692#, 16#B6DB25B2#, 16#24925B6D#)),
(page => 215, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#49249492#,
16#24922492#, 16#49249249#, 16#49292492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#24949249#)),
(page => 250, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24922524#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24922524#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#24925249#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 251, data => (
16#49292492#, 16#24492492#, 16#4D124949#, 16#8A492492#,
16#24924924#, 16#28A49229#, 16#9248A452#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#92524924#, 16#24924924#, 16#49249249#, 16#24492492#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 253, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#25249249#, 16#49249249#, 16#24922492#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24894924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#49492492#, 16#92492492#,
16#24924924#, 16#49249249#, 16#24922492#, 16#24949249#)),
(page => 254, data => (
16#DB6DB6DB#, 16#92496DB6#, 16#24924924#, 16#492DB6DB#,
16#C8492492#, 16#24924924#, 16#49249249#, 16#92499212#,
16#24924924#, 16#49249249#, 16#A4922492#, 16#49249248#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#A4A49249#)),
(page => 255, data => (
16#49249249#, 16#B6DB2492#, 16#24925B6D#, 16#92492491#,
16#24924924#, 16#84929249#, 16#92492491#, 16#24924924#,
16#24929249#, 16#92489249#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#29249249#, 16#89492489#, 16#24894924#,
16#24A48949#, 16#49249249#, 16#92492492#, 16#249B6924#)),
(page => 256, data => (
16#92492492#, 16#24924914#, 16#49249249#, 16#92292492#,
16#24924924#, 16#45229249#, 16#92492492#, 16#24922524#,
16#25249249#, 16#49249249#, 16#92492492#, 16#24924924#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#24929249#)),
(page => 257, data => (
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#A4924924#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#25924924#)),
(page => 258, data => (
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#92492492#, 16#24924924#, 16#24A49249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#924A4924#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 259, data => (
16#92492492#, 16#24924924#, 16#29249249#, 16#49249249#,
16#24922492#, 16#49249249#, 16#92492492#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#92492492#, 16#24924924#, 16#25249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92249492#, 16#24914924#,
16#24924925#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 260, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#25249249#, 16#5B6DB6DB#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 264, data => (
16#8A252492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#44A24A45#, 16#92492492#, 16#24924924#,
16#24924925#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 265, data => (
16#92492492#, 16#24924924#, 16#24924925#, 16#92492492#,
16#24924924#, 16#24925249#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 266, data => (
16#492D96DA#, 16#14926DB2#, 16#49249149#, 16#92492492#,
16#94924924#, 16#6492DB24#, 16#49249249#, 16#92492492#,
16#24924924#, 16#92492492#, 16#24924924#, 16#24A49249#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 267, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#24924925#, 16#92492492#, 16#24924924#,
16#24924925#, 16#92492492#, 16#92924924#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 268, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#4A492492#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 272, data => (
16#924924DB#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#6DB6DB49#, 16#492DB6DB#, 16#92492492#,
16#24924924#, 16#DB6C9249#, 16#92496DB6#, 16#24924924#,
16#924924DB#, 16#24924924#, 16#49249249#, 16#92492492#,
16#B6DB4924#, 16#2692DB6D#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 291, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#92492924#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 292, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#49249292#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 308, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#92492924#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 362, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#24924A49#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 432, data => (
16#49249252#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 465, data => (
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#5B6D9249#, 16#DADB6D92#, 16#6DB76DB6#,
16#DB6D92DB#, 16#92492496#, 16#24924924#, 16#C9249249#,
16#924925B6#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 466, data => (
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#4924B6C9#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 468, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#A4924924#,
16#49249248#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#48A49249#, 16#91291289#,
16#249248A4#, 16#49145249#, 16#92491492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 469, data => (
16#92452492#, 16#A4924912#, 16#48A49248#, 16#92492492#,
16#24924924#, 16#29245249#, 16#8928A492#, 16#248A4924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 470, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92252492#,
16#24924924#, 16#49249249#, 16#9249248A#, 16#24924924#,
16#49229249#, 16#92492492#, 16#24924924#, 16#49229249#)),
(page => 471, data => (
16#92492492#, 16#A4924924#, 16#49249248#, 16#92492492#,
16#A4924924#, 16#49249248#, 16#92492492#, 16#24922924#,
16#49249249#, 16#92492492#, 16#24922924#, 16#49249249#,
16#8A492492#, 16#24924924#, 16#49249249#, 16#8A492492#,
16#24924924#, 16#49249249#, 16#92492292#, 16#B6DB6C94#,
16#6DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#)),
(page => 678, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#24924929#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 695, data => (
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#A4924924#, 16#24924924#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#)),
(page => 696, data => (
16#92492492#, 16#24924924#, 16#25249249#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 762, data => (
16#92492492#, 16#24924924#, 16#25249249#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 3584, data => (
16#49249269#, 16#92492492#, 16#24924924#, 16#6DB6DB6D#,
16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#,
16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#,
16#49249249#, 16#92492492#, 16#24924924#, 16#49249249#,
16#92492492#, 16#24924924#, 16#49249249#, 16#92492492#,
16#24924924#, 16#49249249#, 16#92492492#, 16#24924924#)),
(page => 3585, data => (
16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#,
16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#,
16#6DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#,
16#DB6DB6DB#, 16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#,
16#B6DB6DB6#, 16#6DB6DB6D#, 16#DB6DB6DB#, 16#B6DB6DB6#,
16#6DB6DB6D#, 16#DB6DB6DB#, 16#92496DB6#, 16#24924924#)));
function character_to_category(u: ucs4_character) return character_category is
page: constant unsigned_32 := shift_right(unsigned_32(u), 8);
i: natural;
j: natural;
p: natural;
r: integer;
function extract_category return character_category is
position: unsigned_32;
offset: unsigned_32;
bit: integer;
begin
position := (unsigned_32(u) and 16#FF#) * 3;
offset := position / 32;
bit := integer(position mod 32);
if bit > 29 then
return character_category'val((shift_right(tables(p).data(offset), bit)
or shift_left(tables(p).data(offset + 1), 32 - bit)) and 7);
else
return character_category'val(
shift_right(tables(p).data(offset), bit) and 7);
end if;
end extract_category;
begin
if page = 0 then
p := tables'first;
return extract_category;
end if;
if page in 1 .. 761 and then (same_check(page / 32)
and shift_left(1, integer(page mod 32))) /= 0 then
return letter;
end if;
i := tables'first;
j := tables'last + 1;
while i < j
loop
p := i + (j - i) / 2;
r := integer(page) - integer(tables(p).page);
if r = 0 then
return extract_category;
elsif r > 0 then
i := p + 1;
else -- r < 0
j := p;
end if;
end loop;
return invalid;
end character_to_category;
end aada_character_categories; |