class LIBCHARS < $IS_EQ
****

________This_class_provides_the_special_characters_used_in_this_library
___for_different_syntactic_purposes_in_parsing_or_rendering_date_of
___all_classes.___In_effect_it_is_an_'enumeration'_of_chars,_including
___those_needed_for_rendering_numeric_values_-_which_depend_on_cultural
___definitions.

___NOTE_The_correct_operation_of_the_values_provided_by_this_class_rely_on
________the_fact_that_all_have_single_character_encodings.___If_enhancement
________is_made_for_user_purposes_then_this_rule_must_be_observed.

___WARNING_THERE_ARE_NO_PRE/POST_CONDITIONS_AVAILABLE_IN_THIS_CLASS
___________IMPLEMENTATION_SINCE_ALL_CALLS_CHECK_THAT_THE_CLASS_IS_INITIALISED
___________AS_A_PRELIMINARY_ACTION.__IF_NOT_THEN_INITIALISATION_IS_DONE
___________AT_THAT_TIME_DURING_PROGRAM_EXECUTION.


Flattened version is here

Ancestors
$IS_EQ



Public


Readable Attributes
attr culture : CULTURE ;
attr file_modes : ARRAY{STR} ;
attr has_combining : BOOL ;
attr my_size : CARD ;

Features
Ampersand : CHAR_CODE
Apostrophe : CHAR_CODE
Asterisk : CHAR_CODE
At : CHAR_CODE
Caret : CHAR_CODE
Code_Point : CHAR_CODE
Colon : CHAR_CODE
Comma : CHAR_CODE
Component_Separator : CODE_STR
Currency_Symbol : CHAR_CODE
Decimal_Mark : CHAR_CODE
Decimal_Prefix : CHAR_CODE
Dollar : CHAR_CODE
Equal_Mark : CHAR_CODE
Escape : CHAR_CODE
Exclamation : CHAR_CODE
Exponent_Mark : CHAR_CODE
Filler : CHAR_CODE
Fullstop : CHAR_CODE
Grave_Accent : CHAR_CODE
Hex_Prefix : CHAR_CODE
Hyphen : CHAR_CODE
Justify : CHAR_CODE
Kind_Separator : CODE_STR
Left_Angle : CHAR_CODE
Left_Brace : CHAR_CODE
Left_Bracket : CHAR_CODE
Left_Parenthesis : CHAR_CODE
Line_Mark : CODE_STR
****
________The_result_of_this_routine_is_operating_system_dependent.
Low_Line : CHAR_CODE
Minus_Sign : CHAR_CODE
Null : CHAR_CODE
Number_Ignore : CHAR_CODE
Number_Sign : CHAR_CODE
Octal_Prefix : CHAR_CODE
Parent_Name : CODE_STR
Percent : CHAR_CODE
Plus_Sign : CHAR_CODE
Question_Mark : CHAR_CODE
Quotation_Mark : CHAR_CODE
Reverse_Solidus : CHAR_CODE
Right_Angle : CHAR_CODE
Right_Brace : CHAR_CODE
Right_Bracket : CHAR_CODE
Right_Parenthesis : CHAR_CODE
Root_Name : CODE_STR
Root_Separator : CODE_STR
Search_Separator : CODE_STR
Self_Name : CODE_STR
Semicolon : CHAR_CODE
Solidus : CHAR_CODE
Space : CHAR_CODE
System_Separator : CODE_STR
Tilde : CHAR_CODE
Vline : CHAR_CODE
alt_card( str : STR ) : CARD
****
________This_routine_returns_the_value_of_the_cardinal_number_corresponding_to
___the_given_string_which_is_expected_to_be_an_alternate_digit_string
alt_digit( val : CARD) : STR
****
________This_routine_returns_the_character_representation_of_the_given
___digit_value_if_it_is_within_range,_otherwise_void.
alt_digits : CARD
****
________This_routine_returns_the_number_of_digits_provided_in_the_alternate_set.
card( ch : CHAR ) : CARD
****
________This_routine_returns_the_value_of_the_cardinal_number_corresponding_to
___the_given_character.
create( cult : CULTURE, fpath : FILE_PATH ) : SAME
default : SAME
****
________This_routine_returns_a_default_object_-_which_may_involve_retrieving
___data_from_the_Operating_System_current_culture_specifications.
digit( val : CARD ) : CHAR_CODE
dummy_lib( kind : CODE_KINDS ) : SAME
****
get_file_modes( cursor : BIN_CURSOR )
****
________This_routine_retrieves_the_file_mode_reference_strings_needed_for
___creation/opening,_etc.__They_are_set_into_the_auxiliary_array_file_modes.
get_path_tokens( cursor : BIN_CURSOR )
****
________This_routine_retrieves_the_file_mode_reference_strings_needed_for
___creation/opening,_etc.__They_are_set_into_the_auxiliary_array_path_tokens.
___Note_that_the_loop_expires_at_the_end_of_the_buffer_-_if_not_before!
hex_card( ch : CHAR ) : CARD
****
________This_routine_returns_the_value_of_the_cardinal_number_corresponding_to
___the_given_character.
hex_digit( val : CARD ) : CHAR_CODE
****
________This_routine_returns_the_character_corresponding_to_the_given
___digit_value_if_it_is_within_range,_otherwise_void.
is_eq( other : SAME ) : BOOL
****
________This_predicate_is_provided_to_enable_comparison_for_equality_to
___affect_the_action_taken_as_needed.
oct_card( ch : CHAR ) : CARD
****
________This_routine_returns_the_value_of_the_cardinal_number_corresponding_to
___the_given_character.
oct_digit( val : CARD ) : CHAR_CODE


Private

Env_Name_ref( lib : SAME ) : STR
**** e.g. SATHER_ENV=/usr/local/lib/sather/resources/en_NZ/bin/LIBCHARS
________This_routine_is_more_or_less_'magic'_in_that_it_creates_entities
___which_refer_to_this_object_currently_being_created.__This_works_since
___the_manipulations_required_only_involve_the_'my_size'_component_of_self.
___Otherwise,_of_course,_the_routine_would_fail_recursively.__Do_NOT_alter
___any_of_the_methods_used_without_carefully_checking_that_this_method_will
___still_work_correctly.
const Msg_Count : CARD := lmark_two + 1 ;
percent, ampersand, apostrophe, left_paren, right_paren,
percent, ampersand, apostrophe, left_paren, right_paren,
asterisk, plus_sign, comma, minus_sign, fullstop,
bin_read( fpath : FILE_PATH ) : BIN_CURSOR
****
________This_private_routine_carries_out_the_finding_and_reading_of_the_file
___indicated_by_the_environment_variable_SATHER_ENV,_returning_a_binary
___cursor_indicating_its_contents.
rev_solidus, right_bracket, caret, low_line, grave,
code_card( ch : CHAR_CODE, chclass : CHAR_CLASS ) : CARD
****
________This_private_routine_returns_the_value_of_the_cardinal_number
___corresponding_in_the_given_class_to_the_digit_signified_by_the_given
___character_code.
solidus, colon, semicolon, left_angle, equals,
asterisk, plus_sign, comma, minus_sign, fullstop,
right_angle, question_mark, commercial_at, left_bracket,
component_sep, kind_sep, search_sep ;
shared converter : CODE_CONVERTER ;
shared converter : CODE_CONVERTER ;
attr culture : CULTURE ;
decimal_prefix, exponent, hex_prefix,
def_read : BIN_CURSOR
****
________This_private_routine_carries_out_the_finding_and_reading_of_the_file
___indicated_by_the_environment_variable_SATHER_ENV,_returning_a_binary
___cursor_indicating_its_contents.
digit_code( val : CARD, chclass : CHAR_CLASS ) : CHAR_CODE
****
________This_private_routine_returns_the_character_code_in_this_culture
___which_is_used_to_represent_the_given_digit_value.__If_the_digit_given_is
___out_of_range_then_CHAR_CODE::invalid_is_returned.
space, exclaim, quote_mark, num_sign, dollar,
****
-
solidus, colon, semicolon, left_angle, equals,
escape, unicode_mark,
**** specials for booting! Sather format/number specials
space, exclaim, quote_mark, num_sign, dollar,
****
-
decimal_prefix, exponent, hex_prefix,
attr file_modes : ARRAY{STR} ;
octal_prefix, fmt_filler,
**** punctuation - and space! - in code point order
asterisk, plus_sign, comma, minus_sign, fullstop,
rev_solidus, right_bracket, caret, low_line, grave,
attr has_combining : BOOL ;
decimal_prefix, exponent, hex_prefix,
init : SAME
****
________This_routine_returns_the_current_object_or_default_if_self_is_void.
component_sep, kind_sep, search_sep ;
solidus, colon, semicolon, left_angle, equals,
left_brace, vert_line, right_brace, tilde,
**** line mark - OS defined! - not characters!
right_angle, question_mark, commercial_at, left_bracket,
percent, ampersand, apostrophe, left_paren, right_paren,
lmark_one, lmark_two;
lmark_one, lmark_two;
rev_solidus, right_bracket, caret, low_line, grave,
asterisk, plus_sign, comma, minus_sign, fullstop,
attr misc_chars : ARRAY{CHAR_CODE} ;
attr misc_chars : ARRAY{CHAR_CODE} ;
attr my_size : CARD ;
normal_read( fpath : FILE_PATH ) : BIN_CURSOR
****
________This_private_routine_carries_out_the_finding_and_reading_of_the_file
___indicated_by_the_environment_variable_SATHER_ENV,_returning_a_binary
___cursor_indicating_its_contents.
space, exclaim, quote_mark, num_sign, dollar,
****
-
octal_prefix, fmt_filler,
**** punctuation - and space! - in code point order
root_name, self_name, parent_name, system_sep, root_sep,
attr path_tokens : ARRAY{CODE_STR} ;
attr path_tokens : ARRAY{CODE_STR} ;
percent, ampersand, apostrophe, left_paren, right_paren,
asterisk, plus_sign, comma, minus_sign, fullstop,
shared priv_default : SAME ;
shared priv_default : SAME ;
right_angle, question_mark, commercial_at, left_bracket,
space, exclaim, quote_mark, num_sign, dollar,
****
-
rev_solidus, right_bracket, caret, low_line, grave,
right_angle, question_mark, commercial_at, left_bracket,
left_brace, vert_line, right_brace, tilde,
**** line mark - OS defined! - not characters!
rev_solidus, right_bracket, caret, low_line, grave,
percent, ampersand, apostrophe, left_paren, right_paren,
root_name, self_name, parent_name, system_sep, root_sep,
root_name, self_name, parent_name, system_sep, root_sep,
component_sep, kind_sep, search_sep ;
root_name, self_name, parent_name, system_sep, root_sep,
solidus, colon, semicolon, left_angle, equals,
solidus, colon, semicolon, left_angle, equals,
space, exclaim, quote_mark, num_sign, dollar,
****
-
root_name, self_name, parent_name, system_sep, root_sep,
left_brace, vert_line, right_brace, tilde,
**** line mark - OS defined! - not characters!
const token_cnt : CARD := search_sep + 1 ;
escape, unicode_mark,
**** specials for booting! Sather format/number specials
left_brace, vert_line, right_brace, tilde,
**** line mark - OS defined! - not characters!
work_out_size : CARD
****
________This_routine_calculates_the_storage_size_of_the_default_characters
___from_an_environment_generated_string_(the_current_working_directory_path
___name).

The Sather Home Page