AAda Character Categories

13
Mar
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;
Project aada v1.0-338 (Project id #3)
Process Done (Last compiled on 2012/01/13 01:21:26)
Description Alexis Ada Compiler written in Ada (my first attempt was in C++ which is not correct for an Ada compiler.)