lisette-stdlib 0.1.16

Little language inspired by Rust that compiles to Go
Documentation
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
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
// Generated by Lisette bindgen
// Source: unicode (Go stdlib)
// Go: 1.25.5
// Lisette: 0.1.14

/// In reports whether the rune is a member of one of the ranges.
pub fn In(r: int32, ranges: VarArgs<Ref<RangeTable>>) -> bool

/// Is reports whether the rune is in the specified table of ranges.
pub fn Is(rangeTab: Ref<RangeTable>, r: int32) -> bool

/// IsControl reports whether the rune is a control character.
/// The [C] ([Other]) Unicode category includes more code points
/// such as surrogates; use [Is](C, r) to test for them.
pub fn IsControl(r: int32) -> bool

/// IsDigit reports whether the rune is a decimal digit.
pub fn IsDigit(r: int32) -> bool

/// IsGraphic reports whether the rune is defined as a Graphic by Unicode.
/// Such characters include letters, marks, numbers, punctuation, symbols, and
/// spaces, from categories [L], [M], [N], [P], [S], [Zs].
pub fn IsGraphic(r: int32) -> bool

/// IsLetter reports whether the rune is a letter (category [L]).
pub fn IsLetter(r: int32) -> bool

/// IsLower reports whether the rune is a lower case letter.
pub fn IsLower(r: int32) -> bool

/// IsMark reports whether the rune is a mark character (category [M]).
pub fn IsMark(r: int32) -> bool

/// IsNumber reports whether the rune is a number (category [N]).
pub fn IsNumber(r: int32) -> bool

/// IsOneOf reports whether the rune is a member of one of the ranges.
/// The function "In" provides a nicer signature and should be used in preference to IsOneOf.
pub fn IsOneOf(ranges: Slice<Ref<RangeTable>>, r: int32) -> bool

/// IsPrint reports whether the rune is defined as printable by Go. Such
/// characters include letters, marks, numbers, punctuation, symbols, and the
/// ASCII space character, from categories [L], [M], [N], [P], [S] and the ASCII space
/// character. This categorization is the same as [IsGraphic] except that the
/// only spacing character is ASCII space, U+0020.
pub fn IsPrint(r: int32) -> bool

/// IsPunct reports whether the rune is a Unicode punctuation character
/// (category [P]).
pub fn IsPunct(r: int32) -> bool

/// IsSpace reports whether the rune is a space character as defined
/// by Unicode's White Space property; in the Latin-1 space
/// this is
/// 
/// 	'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP).
/// 
/// Other definitions of spacing characters are set by category
/// Z and property [Pattern_White_Space].
pub fn IsSpace(r: int32) -> bool

/// IsSymbol reports whether the rune is a symbolic character.
pub fn IsSymbol(r: int32) -> bool

/// IsTitle reports whether the rune is a title case letter.
pub fn IsTitle(r: int32) -> bool

/// IsUpper reports whether the rune is an upper case letter.
pub fn IsUpper(r: int32) -> bool

/// SimpleFold iterates over Unicode code points equivalent under
/// the Unicode-defined simple case folding. Among the code points
/// equivalent to rune (including rune itself), SimpleFold returns the
/// smallest rune > r if one exists, or else the smallest rune >= 0.
/// If r is not a valid Unicode code point, SimpleFold(r) returns r.
/// 
/// For example:
/// 
/// 	SimpleFold('A') = 'a'
/// 	SimpleFold('a') = 'A'
/// 
/// 	SimpleFold('K') = 'k'
/// 	SimpleFold('k') = '\u212A' (Kelvin symbol, K)
/// 	SimpleFold('\u212A') = 'K'
/// 
/// 	SimpleFold('1') = '1'
/// 
/// 	SimpleFold(-2) = -2
pub fn SimpleFold(r: int32) -> int32

/// To maps the rune to the specified case: [UpperCase], [LowerCase], or [TitleCase].
pub fn To(_case: int, r: int32) -> int32

/// ToLower maps the rune to lower case.
pub fn ToLower(r: int32) -> int32

/// ToTitle maps the rune to title case.
pub fn ToTitle(r: int32) -> int32

/// ToUpper maps the rune to upper case.
pub fn ToUpper(r: int32) -> int32

/// CaseRange represents a range of Unicode code points for simple (one
/// code point to one code point) case conversion.
/// The range runs from Lo to Hi inclusive, with a fixed stride of 1. Deltas
/// are the number to add to the code point to reach the code point for a
/// different case for that character. They may be negative. If zero, it
/// means the character is in the corresponding case. There is a special
/// case representing sequences of alternating corresponding Upper and Lower
/// pairs. It appears with a fixed Delta of
/// 
/// 	{UpperLower, UpperLower, UpperLower}
/// 
/// The constant UpperLower has an otherwise impossible delta value.
pub struct CaseRange {
  pub Lo: uint32,
  pub Hi: uint32,
  pub Delta: Slice<int32>,
}

/// Range16 represents of a range of 16-bit Unicode code points. The range runs from Lo to Hi
/// inclusive and has the specified stride.
pub struct Range16 {
  pub Lo: uint16,
  pub Hi: uint16,
  pub Stride: uint16,
}

/// Range32 represents of a range of Unicode code points and is used when one or
/// more of the values will not fit in 16 bits. The range runs from Lo to Hi
/// inclusive and has the specified stride. Lo and Hi must always be >= 1<<16.
pub struct Range32 {
  pub Lo: uint32,
  pub Hi: uint32,
  pub Stride: uint32,
}

/// RangeTable defines a set of Unicode code points by listing the ranges of
/// code points within the set. The ranges are listed in two slices
/// to save space: a slice of 16-bit ranges and a slice of 32-bit ranges.
/// The two slices must be in sorted order and non-overlapping.
/// Also, R32 should contain only values >= 0x10000 (1<<16).
pub struct RangeTable {
  pub R16: Slice<Range16>,
  pub R32: Slice<Range32>,
  pub LatinOffset: int,
}

/// SpecialCase represents language-specific case mappings such as Turkish.
/// Methods of SpecialCase customize (by overriding) the standard mappings.
pub struct SpecialCase(Slice<CaseRange>)

/// Indices into the Delta arrays inside CaseRanges for case mapping.
const LowerCase = 1

const MaxASCII = 127

/// Indices into the Delta arrays inside CaseRanges for case mapping.
const MaxCase = 3

const MaxLatin1 = 255

const MaxRune = 1114111

const ReplacementChar = 65533

/// Indices into the Delta arrays inside CaseRanges for case mapping.
const TitleCase = 2

/// Indices into the Delta arrays inside CaseRanges for case mapping.
const UpperCase = 0

/// If the Delta field of a [CaseRange] is UpperLower, it means
/// this CaseRange represents a sequence of the form (say)
/// [Upper] [Lower] [Upper] [Lower].
const UpperLower = 1114112

/// Version is the Unicode edition from which the tables are derived.
const Version = "15.0.0"

/// These variables have type *RangeTable.
pub var ASCII_Hex_Digit: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Adlam: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Ahom: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Anatolian_Hieroglyphs: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Arabic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Armenian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Avestan: Ref<RangeTable>

pub var AzeriCase: SpecialCase

/// These variables have type *RangeTable.
pub var Balinese: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Bamum: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Bassa_Vah: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Batak: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Bengali: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Bhaiksuki: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Bidi_Control: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Bopomofo: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Brahmi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Braille: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Buginese: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Buhid: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var C: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Canadian_Aboriginal: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Carian: Ref<RangeTable>

/// CaseRanges is the table describing case mappings for all letters with
/// non-self mappings.
pub var CaseRanges: Slice<CaseRange>

/// Categories is the set of Unicode category tables.
pub var Categories: Map<string, Ref<RangeTable>>

/// CategoryAliases maps category aliases to standard category names.
pub var CategoryAliases: Map<string, string>

/// These variables have type *RangeTable.
pub var Caucasian_Albanian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cc: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cf: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Chakma: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cham: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cherokee: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Chorasmian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cn: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Co: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Common: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Coptic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cs: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cuneiform: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cypriot: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cypro_Minoan: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Cyrillic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Dash: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Deprecated: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Deseret: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Devanagari: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Diacritic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Digit: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Dives_Akuru: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Dogra: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Duployan: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Egyptian_Hieroglyphs: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Elbasan: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Elymaic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Ethiopic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Extender: Ref<RangeTable>

/// FoldCategory maps a category name to a table of
/// code points outside the category that are equivalent under
/// simple case folding to code points inside the category.
/// If there is no entry for a category name, there are no such points.
pub var FoldCategory: Map<string, Ref<RangeTable>>

/// FoldScript maps a script name to a table of
/// code points outside the script that are equivalent under
/// simple case folding to code points inside the script.
/// If there is no entry for a script name, there are no such points.
pub var FoldScript: Map<string, Ref<RangeTable>>

/// These variables have type *RangeTable.
pub var Georgian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Glagolitic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Gothic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Grantha: Ref<RangeTable>

/// GraphicRanges defines the set of graphic characters according to Unicode.
pub var GraphicRanges: Slice<Ref<RangeTable>>

/// These variables have type *RangeTable.
pub var Greek: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Gujarati: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Gunjala_Gondi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Gurmukhi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Han: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hangul: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hanifi_Rohingya: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hanunoo: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hatran: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hebrew: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hex_Digit: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hiragana: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Hyphen: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var IDS_Binary_Operator: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var IDS_Trinary_Operator: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Ideographic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Imperial_Aramaic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Inherited: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Inscriptional_Pahlavi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Inscriptional_Parthian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Javanese: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Join_Control: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Kaithi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Kannada: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Katakana: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Kawi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Kayah_Li: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Kharoshthi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Khitan_Small_Script: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Khmer: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Khojki: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Khudawadi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var L: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var LC: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lao: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Latin: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lepcha: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Letter: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Limbu: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Linear_A: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Linear_B: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lisu: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Ll: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lm: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lo: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Logical_Order_Exception: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lower: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lt: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lu: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lycian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Lydian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var M: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mahajani: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Makasar: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Malayalam: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mandaic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Manichaean: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Marchen: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mark: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Masaram_Gondi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mc: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Me: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Medefaidrin: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Meetei_Mayek: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mende_Kikakui: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Meroitic_Cursive: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Meroitic_Hieroglyphs: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Miao: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mn: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Modi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mongolian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Mro: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Multani: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Myanmar: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var N: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nabataean: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nag_Mundari: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nandinagari: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nd: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var New_Tai_Lue: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Newa: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nko: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nl: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var No: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Noncharacter_Code_Point: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Number: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nushu: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Nyiakeng_Puachue_Hmong: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Ogham: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Ol_Chiki: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Hungarian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Italic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_North_Arabian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Permic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Persian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Sogdian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_South_Arabian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Turkic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Old_Uyghur: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Oriya: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Osage: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Osmanya: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_Alphabetic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_Default_Ignorable_Code_Point: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_Grapheme_Extend: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_ID_Continue: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_ID_Start: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_Lowercase: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_Math: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Other_Uppercase: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var P: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pahawh_Hmong: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Palmyrene: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pattern_Syntax: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pattern_White_Space: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pau_Cin_Hau: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pc: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pd: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pe: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pf: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Phags_Pa: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Phoenician: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Pi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Po: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Prepended_Concatenation_Mark: Ref<RangeTable>

/// PrintRanges defines the set of printable characters according to Go.
/// ASCII space, U+0020, is handled separately.
pub var PrintRanges: Slice<Ref<RangeTable>>

/// Properties is the set of Unicode property tables.
pub var Properties: Map<string, Ref<RangeTable>>

/// These variables have type *RangeTable.
pub var Ps: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Psalter_Pahlavi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Punct: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Quotation_Mark: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Radical: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Regional_Indicator: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Rejang: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Runic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var S: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var STerm: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Samaritan: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Saurashtra: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sc: Ref<RangeTable>

/// Scripts is the set of Unicode script tables.
pub var Scripts: Map<string, Ref<RangeTable>>

/// These variables have type *RangeTable.
pub var Sentence_Terminal: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sharada: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Shavian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Siddham: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var SignWriting: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sinhala: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sk: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sm: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var So: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Soft_Dotted: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sogdian: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sora_Sompeng: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Soyombo: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Space: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Sundanese: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Syloti_Nagri: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Symbol: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Syriac: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tagalog: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tagbanwa: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tai_Le: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tai_Tham: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tai_Viet: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Takri: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tamil: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tangsa: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tangut: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Telugu: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Terminal_Punctuation: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Thaana: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Thai: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tibetan: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tifinagh: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Tirhuta: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Title: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Toto: Ref<RangeTable>

pub var TurkishCase: SpecialCase

/// These variables have type *RangeTable.
pub var Ugaritic: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Unified_Ideograph: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Upper: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Vai: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Variation_Selector: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Vithkuqi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Wancho: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Warang_Citi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var White_Space: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Yezidi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Yi: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Z: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Zanabazar_Square: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Zl: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Zp: Ref<RangeTable>

/// These variables have type *RangeTable.
pub var Zs: Ref<RangeTable>

impl SpecialCase {
  /// ToLower maps the rune to lower case giving priority to the special mapping.
  fn ToLower(self, r: int32) -> int32

  /// ToTitle maps the rune to title case giving priority to the special mapping.
  fn ToTitle(self, r: int32) -> int32

  /// ToUpper maps the rune to upper case giving priority to the special mapping.
  fn ToUpper(self, r: int32) -> int32
}