// Generated by Lisette bindgen
// Source: unicode (Go stdlib)
// Go: 1.25.5
// Lisette: 0.1.20

/// 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, K)
/// 	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
}
