immutable class UNICODE < $ORDERED{UNICODE}
****

________This_partial_class_is_used_in_defining_the_language_full_encoding_of
___all_forms_of_character_in_a_32-bit_'number'_as_specified_in_the_standard
___ISO/IEC_10646-1.2:1993.

________Since_for_multiple_case_languages_which_have_the_notion_of_letters,
___digits_etc_there_is_a_wide_range_of_codes_falling_into_each_class,_only
___those_codes_which_appear_in_the_various_Latin,_Greek_and_Cyrillic_tables
___of_the_standard_are_given_explicit_definition.___Other_groupings_defined
___by_the_standard_are_defined_as_multiple_ranges.


Ancestors
$ORDERED{_} $IS_LT{_} $IS_EQ $VALUE{_}
$NIL $IS_NIL



Public


Constants
const AMPERSAND : SAME := do_create(38) ;
const APOSTROPHE : SAME := do_create(39) ;
const ASTERISK : SAME := do_create(42) ;
const Alphabetic_Presentation_Forms : RANGE := RANGE::create(0xFB00,0xFB4F) ;
const Arabic_Extended : RANGE := RANGE::create(0x0653,0x06FF) ;
const Arabic_Presentation_Forms_A : RANGE := RANGE::create(0xFB50,0xFDFF) ;
const Arabic_Presentation_Forms_B : RANGE := RANGE::create(0xFE70,0xFEFE) ;
const Armenian : RANGE := RANGE::create(0x0530,0x058F) ;
const Arrows : RANGE := RANGE::create(0x2190,0x21FF) ;
const BYTE_ORDER_MARK : SAME := do_create(0xFEFF) ;
**** UTF-16 Big-Endian
const BYTE_SWAPPED_ORDER : SAME := do_create(0xFFFE) ;
**** UTF-16 Little-Endian
const Basic_Arabic : RANGE := RANGE::create(0x0600,0x0652) ;
const Basic_Georgian : RANGE := RANGE::create(0x10D0,0x10FF) ;
const Basic_Greek : RANGE := RANGE::create(0x0370,0x03CF) ;
const Basic_Hebrew : RANGE := RANGE::create(0x05D0,0x05EA) ;
const Basic_Latin : RANGE := RANGE::create(SPACE.card,TILDE.card) ;
const Bengali : RANGE := RANGE::create(0x0980,0x09FF) ;
const Block_Elements : RANGE := RANGE::create(0x2580,0x259F) ;
const Bopomofo : RANGE := RANGE::create(0x3100,0x312F) ;
const Box_Drawing : RANGE := RANGE::create(0x2500,0x257F) ;
const CIRCUMFLEX_ACCENT : SAME := do_create(94) ;
const CJK_Compatibility : RANGE := RANGE::create(0x3300,0x33FF) ;
const CJK_Compatibility_Forms : RANGE := RANGE::create(0xFE30,0xFE4F) ;
const CJK_Compatibility_Ideographs : RANGE := RANGE::create(0xF900,0xFAFF) ;
const CJK_Miscellaneous : RANGE := RANGE::create(0x3190,0x319F) ;
const CJK_Smbols_and_Punctuation : RANGE := RANGE::create(0x3000,0x303F) ;
const CJK_Unified_Ideographs : RANGE := RANGE::create(0x3400,0x9FFF) ;
const COLON : SAME := do_create(58) ;
const COMMA : SAME := do_create(44) ;
const COMMERCIAL_AT : SAME := do_create(64) ;
const Canadian_Aboriginal : RANGE := RANGE::create(0x1400,0x167F) ;
const Case_Pair : ARRAY{CASE_MAPLET} :=
const Cherokee : RANGE := RANGE::create(0x13A0,0x13FF) ;
const Code_Groups : ARRAY{ARRAY{RANGE}} :=
const Combining : ARRAY{RANGE} := |
**** Space/Non-space
const Combining_Diacritical_Marks : RANGE := RANGE::create(0x0300,0x036F) ;
const Combining_Diacritical_Marks_for_Symbols : RANGE :=RANGE::create(0x20D0,0x20FF) ;
const Combining_Half_Marks : RANGE := RANGE::create(0xFE20,0xFE2F) ;
const Control_Pictures : RANGE := RANGE::create(0x2400,0x243F) ;
const Currency_Symbols : RANGE := RANGE::create(0x20A0,0x20CF) ;
const Cyrillic : RANGE := RANGE::create(0x0400,0x04FF) ;
const DIGIT_EIGHT : SAME := do_create(56) ;
const DIGIT_FIVE : SAME := do_create(53) ;
const DIGIT_FOUR : SAME := do_create(52) ;
const DIGIT_NINE : SAME := do_create(57) ;
const DIGIT_ONE : SAME := do_create(49) ;
const DIGIT_SEVEN : SAME := do_create(55) ;
const DIGIT_SIX : SAME := do_create(54) ;
const DIGIT_THREE : SAME := do_create(51) ;
const DIGIT_TWO : SAME := do_create(50) ;
const DIGIT_ZERO : SAME := do_create(48) ;
const DOLLAR_SIGN : SAME := do_create(36) ;
const Decimal : ARRAY{ARRAY{RANGE}} := |
**** Arabic
const Devanagari : RANGE := RANGE::create(0x0900,0x097F) ;
const Dingbats : RANGE := RANGE::create(0x2700,0x27BF) ;
const EQUALS_SIGN : SAME := do_create(61) ;
const EXCLAMATION_MARK : SAME := do_create(33) ;
const Enclosed_Alphanumerics : RANGE := RANGE::create(0x2460,0x24FF) ;
const Enclosed_CJK_Letters_and_Months : RANGE := RANGE::create(0x3200,0x32FF) ;
const Ethiopic : RANGE := RANGE::create(0x1200,0x137F) ;
const FULL_STOP : SAME := do_create(46) ;
const GRAVE_ACCENT : SAME := do_create(96) ;
const GREATER_THAN_SIGN : SAME := do_create(62) ;
const General_Punctuation : RANGE := RANGE::create(0x2000,0x206F) ;
const Geometric_Shapes : RANGE := RANGE::create(0x25A0,0x25FF) ;
const Georgian_Extended : RANGE := RANGE::create(0x10A0,0x10CF) ;
const Greek_Extended : RANGE := RANGE::create(0x1F00,0x1FFF) ;
const Greek_Symbols_and_Coptic : RANGE := RANGE::create(0x03D0,0x03FF) ;
const Gujarati : RANGE := RANGE::create(0x0A80,0x0AFF) ;
const Gurmukhi : RANGE := RANGE::create(0x0A00,0x0A07F) ;
const HYPHEN_MINUS : SAME := do_create(45) ;
const Halfwidth_and_Fullwidth_Forms : RANGE := RANGE::create(0xFF00,0xFFEF) ;
const Hangul : RANGE := RANGE::create(0xAC00,0xD7A3) ;
const Hangul_Compatibility_Jamo : RANGE := RANGE::create(0x3130,0x318F) ;
const Hangul_Jamo : RANGE := RANGE::create(0x1100,0x11FF) ;
const Hebrew_Extended_1 : RANGE := RANGE::create(0x0590,0x05CF) ;
const Hebrew_Extended_2 : RANGE := RANGE::create(0x05EB,0x05FF) ;
const Hiragana : RANGE := RANGE::create(0x3040,0x309F) ;
const INTERLINEAR_ANNOTATION_ANCHOR : SAME := do_create(0xFFF9) ;
const INTERLINEAR_ANNOTATION_SEPARATOR : SAME := do_create(0xFFFA) ;
const INTERLINEAR_ANNOTATION_TERMINATOR : SAME := do_create(0xFFFB) ;
const INVALID_CODE : SAME := do_create(0xFFFF) ;
const IPA_Extensions : RANGE := RANGE::create(0x0250,0x02AF) ;
const Kannada : RANGE := RANGE::create(0x0C80,0xCFF) ;
const Katakana : RANGE := RANGE::create(0x30A0,0x30FF) ;
const Khmer : RANGE := RANGE::create(0x1780,0x17FF) ;
const LATIN_CAPITAL_LETTER_A : SAME := do_create(65) ;
const LATIN_CAPITAL_LETTER_B : SAME := do_create(66) ;
const LATIN_CAPITAL_LETTER_C : SAME := do_create(67) ;
const LATIN_CAPITAL_LETTER_D : SAME := do_create(68) ;
const LATIN_CAPITAL_LETTER_E : SAME := do_create(69) ;
const LATIN_CAPITAL_LETTER_F : SAME := do_create(70) ;
const LATIN_CAPITAL_LETTER_G : SAME := do_create(71) ;
const LATIN_CAPITAL_LETTER_H : SAME := do_create(72) ;
const LATIN_CAPITAL_LETTER_I : SAME := do_create(73) ;
const LATIN_CAPITAL_LETTER_J : SAME := do_create(74) ;
const LATIN_CAPITAL_LETTER_K : SAME := do_create(75) ;
const LATIN_CAPITAL_LETTER_L : SAME := do_create(76) ;
const LATIN_CAPITAL_LETTER_M : SAME := do_create(77) ;
const LATIN_CAPITAL_LETTER_N : SAME := do_create(78) ;
const LATIN_CAPITAL_LETTER_O : SAME := do_create(79) ;
const LATIN_CAPITAL_LETTER_P : SAME := do_create(80) ;
const LATIN_CAPITAL_LETTER_Q : SAME := do_create(81) ;
const LATIN_CAPITAL_LETTER_R : SAME := do_create(82) ;
const LATIN_CAPITAL_LETTER_S : SAME := do_create(83) ;
const LATIN_CAPITAL_LETTER_T : SAME := do_create(84) ;
const LATIN_CAPITAL_LETTER_U : SAME := do_create(85) ;
const LATIN_CAPITAL_LETTER_V : SAME := do_create(86) ;
const LATIN_CAPITAL_LETTER_W : SAME := do_create(87) ;
const LATIN_CAPITAL_LETTER_X : SAME := do_create(88) ;
const LATIN_CAPITAL_LETTER_Y : SAME := do_create(89) ;
const LATIN_CAPITAL_LETTER_Z : SAME := do_create(90) ;
const LATIN_SMALL_LETTER_A : SAME := do_create(97) ;
const LATIN_SMALL_LETTER_B : SAME := do_create(98) ;
const LATIN_SMALL_LETTER_C : SAME := do_create(99) ;
const LATIN_SMALL_LETTER_D : SAME := do_create(100) ;
const LATIN_SMALL_LETTER_E : SAME := do_create(101) ;
const LATIN_SMALL_LETTER_F : SAME := do_create(102) ;
const LATIN_SMALL_LETTER_G : SAME := do_create(103) ;
const LATIN_SMALL_LETTER_H : SAME := do_create(104) ;
const LATIN_SMALL_LETTER_I : SAME := do_create(105) ;
const LATIN_SMALL_LETTER_J : SAME := do_create(106) ;
const LATIN_SMALL_LETTER_K : SAME := do_create(107) ;
const LATIN_SMALL_LETTER_L : SAME := do_create(108) ;
const LATIN_SMALL_LETTER_M : SAME := do_create(109) ;
const LATIN_SMALL_LETTER_N : SAME := do_create(110) ;
const LATIN_SMALL_LETTER_O : SAME := do_create(111) ;
const LATIN_SMALL_LETTER_P : SAME := do_create(112) ;
const LATIN_SMALL_LETTER_Q : SAME := do_create(113) ;
const LATIN_SMALL_LETTER_R : SAME := do_create(114) ;
const LATIN_SMALL_LETTER_S : SAME := do_create(115) ;
const LATIN_SMALL_LETTER_T : SAME := do_create(116) ;
const LATIN_SMALL_LETTER_U : SAME := do_create(117) ;
const LATIN_SMALL_LETTER_V : SAME := do_create(118) ;
const LATIN_SMALL_LETTER_W : SAME := do_create(119) ;
const LATIN_SMALL_LETTER_X : SAME := do_create(120) ;
const LATIN_SMALL_LETTER_Y : SAME := do_create(121) ;
const LATIN_SMALL_LETTER_Z : SAME := do_create(122) ;
const LEFT_CURLY_BRACKET : SAME := do_create(123) ;
const LEFT_PARENTHESIS : SAME := do_create(40) ;
const LEFT_SQUARE_BRACKET : SAME := do_create(91) ;
const LESS_THAN_SIGN : SAME := do_create(60) ;
const LOW_LINE : SAME := do_create(95) ;
const Lao : RANGE := RANGE::create(0x0E80,0x0EFF) ;
const Latin1_Supplement : RANGE := RANGE::create(0x00A0,0x00FF) ;
const Latin_Extended_A : RANGE := RANGE::create(0x0100,0x017F) ;
const Latin_Extended_Additional : RANGE := RANGE::create(0x1E00,0x1EFF) ;
const Latin_Extended_B : RANGE := RANGE::create(0x0180,0x0217) ;
const Letterlike_Symbols : RANGE := RANGE::create(0x2100,0x214F) ;
const Letters : ARRAY{ARRAY{RANGE}} := |
**** Arabic
const Lower_only : ARRAY{RANGE} := |
**** Armenian
const Malayalam : RANGE := RANGE::create(0x0D00,0x0D7F) ;
const Mathematical_Operators : RANGE := RANGE::create(0x2200,0x22FF) ;
const Miscellaneous_Symbols : RANGE := RANGE::create(0x2600,0x26FF) ;
const Miscellaneous_Technical : RANGE := RANGE::create(0x2300,0x23FF) ;
const Mongolian : RANGE := RANGE::create(0x1800,0x18AF) ;
const Myanmar : RANGE := RANGE::create(0x1000,0x109F) ;
const NUMBER_SIGN : SAME := do_create(35) ;
const Number_Forms : RANGE := RANGE::create(0x2150,0x218F) ;
const Numeric : ARRAY{ARRAY{RANGE}} := |
**** Arabic
const OBJECT_REPLACEMENT_CHARACTER : SAME := do_create(0xFFFC) ;
const Ogham : RANGE := RANGE::create(0x1680,0x169F) ;
const Optical_Character_Recognition : RANGE := RANGE::create(0x2440,0x245F) ;
const Oriya : RANGE := RANGE::create(0x0B00,0x0B7F) ;
const PERCENT_SIGN : SAME := do_create(37) ;
const PLUS_SIGN : SAME := do_create(43) ;
const Private_Area : RANGE := RANGE::create(0xE000,0xF7FF) ;
const Private_Use_Area : RANGE := RANGE::create(0xE000,0xF8FF) ;
const QUESTION_MARK : SAME := do_create(63) ;
const QUOTATION_MARK : SAME := do_create(34) ;
const REPLACEMENT_CHARACTER : SAME := do_create(0xFFFD) ;
const REVERSE_SOLIDUS : SAME := do_create(92) ;
const RIGHT_CURLY_BRACKET : SAME := do_create(125) ;
const RIGHT_PARENTHESIS : SAME := do_create(41) ;
const RIGHT_SQUARE_BRACKET : SAME := do_create(93) ;
const Runic : RANGE := RANGE::create(0x16A0,0x16F0) ;
const SEMICOLON : SAME := do_create(59) ;
const SOLIDUS : SAME := do_create(47) ;
const SPACE : SAME := do_create(32) ;
const Sinhala : RANGE := RANGE::create(0x0D80,0x0DFF) ;
const Small_Form_Variants : RANGE := RANGE::create(0xFE50,0xFE6F) ;
const Spacing_Modifier_Letters : RANGE := RANGE::create(0x02B0,0x02FF) ;
const Specials : RANGE := RANGE::create(0xFFF0,0xFFFD) ;
const Superscripts_and_Subscripts : RANGE := RANGE::create(0x2070,0x209F) ;
const Symbolics : ARRAY{ARRAY{RANGE}} := |
**** Braille
const Syriac : RANGE := RANGE::create(0x0700,0x074F) ;
const TILDE : SAME := do_create(126) ;
const Tamil : RANGE := RANGE::create(0x0B80,0x0BFF) ;
const Telugu : RANGE := RANGE::create(0x0C00,0x0C7F) ;
const Thai : RANGE := RANGE::create(0x0E00,0x0E7F) ;
const Tibetan : RANGE := RANGE::create(0x0F00,0x0FCF) ;
const UTF_8_BYTE_ORDER_MARK : SAME := do_create(0xEFBBBF) ;
const Upper_only : ARRAY{RANGE} := |
const VERTICAL_LINE : SAME := do_create(124) ;
const Yi : RANGE := RANGE::create(0xA000,0xA48F) ;
const ZERO_WIDTH_NO_BREAK_SPACE : SAME := do_create(0xFEFF) ;
const asize : CARD := 4 ;
const has_cases : BOOL := true ;
const has_digits : BOOL := true ;
const has_hex : BOOL := true ;
const has_letters : BOOL := true ;

Features
aget( .. Included as aget
aset( .. Included as aset
card : CARD
****
_____pre_~void(self)
code : CHAR_CODE
****
________This_routine_returns_the_encoding_as_a_raw_code.
create(val : CARD) : SAME
create(val : RUNE) : SAME
****
________This_routine_is_used_to_create_an_encoding_from_a_numeric_value
___if_such_an_encoding_is_valid,_otherwise_an_invalid_value_is_returned!
___This_creation_cannot_take_into_account_whether_the_encoding_is_in
___any_sense_other_than_as_a_bit-pattern_correct.
digit_value : CARD
hex_digit_value : CARD
is_646char : BOOL
****
________This_predicate_returns_true_if_and_only_if_the_value_of_self_falls
___within_the_range_of_codes_defined_by_ISO/IEC_646,_otherwise_false.
is_combining : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_a_combining
___encoding.
is_control : BOOL
****
________This_predicate_returns_false_identically,_since_control_codes_are_not
___part_of_this_encoding.
is_digit(script : SCRIPTS) : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding
___representing_a_digit_for_the_purposes_of_calculation_in_the_given_script.
is_digit : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding
___representing_a_digit_for_the_purposes_of_calculation,_etc_irrespective_of
___script_form.
is_down_mapped : BOOL
****
________This_private_routine_searches_case_maplets,_returning_the_conversion
___maplet_to_lower_case_found_if_successful,_otherwise_void
is_eq(other : SAME) : BOOL
****
__This_predicate_returns_true_if_and_only_if_self_and_other_are_the_same_code.
is_eq(other : $OB) : BOOL .. Included as is_eq
**** This is the generic equality predicate. c.f. the class $IS_EQ
is_hex_digit : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_for
___a_hexadecimal_digit.__Note_that_this_is_only_possible_in_Latin_script!
is_letter(script : SCRIPTS) : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_of
___a_character_deemed_to_be_alphabetic_in_the_given_script.
is_letter : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_of
___a_character_deemed_to_be_alphabetic_irrespective_of_script.
is_lower : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_of
___a_lower_case_letter_in_any_script.
is_lt(other : SAME) : BOOL
****
__This_predicate_returns_true_if_and_only_if_self_and_other_are_the_same_code.
is_nil : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_has_the_value_nil.
is_numeric(script : SCRIPTS) : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding
___representing_a_numeric_value_--_ie_not_necessarily_a_digit_for
___calculation_purposes_--_in_the_given_script.
is_numeric : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding
___representing_a_numeric_value_--_ie_not_necessarily_a_digit_for
___calculation_purposes_--_in_any_script.
is_octal_digit(script : SCRIPTS) : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding
___representing_an_octal_digit_in_the_given_script.
is_octal_digit : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding
___representing_an_octal_digit_in_any_script.
is_print : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_for
___a_visible_mark.
is_punct : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_an_encoding_for
___a_punctuation_symbol.
is_spacing : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_for
___an_invisible_mark_which_occupies_space_on_a_presentation_medium.

___NOTE_Control_function_encodings_which_provide_'spacing'_do_not_form_part
________of_the_ISO/IEC_10646-1_repertoire.
is_up_mapped : BOOL
****
________This_private_routine_searches_case_maplets,_returning_the_conversion
___maplet_to_lower_case_found_if_successful,_otherwise_void
is_upper : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_of_an
___upper_case_letter_in_any_script.
is_valid(code : CARD) : BOOL
****
________This_predicate_returns_true_if_and_only_if_code_is_a_valid_number
___for_use_as_the_encoding_of_this_(Unicode,_UCS4,_UCS2)_kind.
is_whitespace : BOOL
****
________This_predicate_returns_true_if_and_only_if_self_is_the_encoding_for
___an_invisible_mark_which_occupies_space_on_the_presentation_medium.
nil : SAME
****
________This_routine_returns_the_nil_code_value.
octal_value : CARD
rune : RUNE
****
________This_routine_is_included_for_conformity_between_all_repertoires
___which_all_provide_a_conversion_operation_--_in_this_case_merely_returning
___self_provided_that_self_is_not_a_combining_character_encoding,_when_Invalid
___is_returned!
to_lower : SAME
to_upper : SAME

Iters
aelt!( .. Included as aelt!
aelt!( .. Included as aelt!
aelt!( .. Included as aelt!
aelt! : T .. Included as aelt!
aind! : CARD .. Included as aind!


Private

const Invalid_Val : CARD := 0x7FFFFFFF ;
digit_value(script : SCRIPTS) : CARD
****
________This_routine_returns_the_numeric_value_of_the_octal_digit_encoded_by_self.
do_card : CARD
****
________This_routine_returns_the_integer_version_of_self.
do_create(val : CARD) : SAME
****
________This_routine_merely_makes_use_of_a_built-in_to_type_'cast'_to_UCS4.
is_down_mapped(out map : CASE_MAPLET) : BOOL
****
________This_private_routine_searches_case_maplets,_returning_the_conversion
___maplet_to_lower_case_found_if_successful,_otherwise_void
is_legal_aelts_arg( .. Included as is_legal_aelts_arg
is_up_mapped(out map : CASE_MAPLET) : BOOL
****
________This_private_routine_searches_case_maplets,_returning_the_conversion
___maplet_to_lower_case_found_if_successful,_otherwise_void
octal_value(script : SCRIPTS) : CARD
****
________This_routine_returns_the_numeric_value_of_the_octal_digit_encoded_by_self.
const priv_nil : SAME := do_create(Invalid_Val) ;

The Sather Home Page