expanded class interface CHARACTER -- -- Note: An Eiffel CHARACTER is mapped as a C char or as a Java Byte. -- feature(s) from HASHABLE hash_code: INTEGER -- The hash-code value of Current. ensure good_hash_value: Result >= 0 feature(s) from COMPARABLE infix "<" (other: CHARACTER): BOOLEAN -- Comparison using code. require other_exists: other /= Void ensure asymmetric: Result implies not (other < Current) infix "<=" (other: CHARACTER): BOOLEAN -- Comparison using code. require other_exists: other /= Void ensure definition: Result = (Current < other or is_equal(other)) infix ">" (other: CHARACTER): BOOLEAN -- Comparison using code. require other_exists: other /= Void ensure definition: Result = (other < Current) infix ">=" (other: CHARACTER): BOOLEAN -- Comparison using code. require other_exists: other /= Void ensure definition: Result = (other <= Current) in_range (lower, upper: like Current): BOOLEAN -- Return true if Current is in range [lower..upper] ensure Result = (Current >= lower and Current <= upper) compare (other: like Current): INTEGER -- If current object equal to other, 0; -- if smaller, -1; if greater, 1. require other_exists: other /= Void ensure equal_zero: Result = 0 = is_equal(other); smaller_negative: Result = - 1 = Current < other; greater_positive: Result = 1 = Current > other three_way_comparison (other: like Current): INTEGER -- If current object equal to other, 0; -- if smaller, -1; if greater, 1. require other_exists: other /= Void ensure equal_zero: Result = 0 = is_equal(other); smaller_negative: Result = - 1 = Current < other; greater_positive: Result = 1 = Current > other min (other: like Current): like Current -- Minimum of Current and other. require other /= Void ensure Result <= Current and then Result <= other; compare(Result) = 0 or else other.compare(Result) = 0 max (other: like Current): like Current -- Maximum of Current and other. require other /= Void ensure Result >= Current and then Result >= other; compare(Result) = 0 or else other.compare(Result) = 0 feature(s) from CHARACTER_REF item: CHARACTER feature(s) from CHARACTER_REF set_item (value: like item) code: INTEGER -- ASCII code of Current. -- No Sign-extended conversion. ensure Result >= 0 to_upper: CHARACTER -- Conversion to the corresponding upper case. to_lower: CHARACTER -- Conversion to the corresponding lower case. feature(s) from CHARACTER_REF -- Object Printing : out_in_tagged_out_memory -- Append terse printable represention of current object -- in tagged_out_memory. feature(s) from CHARACTER_REF -- Object Printing : fill_tagged_out_memory -- Append terse printable represention of current object -- in tagged_out_memory. feature(s) from CHARACTER to_integer: INTEGER -- Sign-extended conversion. value: INTEGER -- Gives the value of a decimal digit. require is_digit ensure Result.in_range(0,9) decimal_value: INTEGER -- Gives the value of a decimal digit. require is_digit ensure Result.in_range(0,9) binary_value: INTEGER -- Gives the value of a binary digit. require is_binary_digit ensure Result.in_range(0,1) octal_value: INTEGER -- Gives the value of an octal digit. require is_octal_digit ensure Result.in_range(0,7) hexadecimal_value: INTEGER -- Gives the value of an hexadecimal digit. require is_hexadecimal_digit ensure Result.in_range(0,15) same_as (other: CHARACTER): BOOLEAN -- Case insensitive comparison. -- No difference between upper/lower case letters. ensure Result implies to_lower = other or to_upper = other is_letter: BOOLEAN -- Is it a letter ? ensure Result = in_range('A','Z') or in_range('a','z') is_digit: BOOLEAN -- Belongs to '0'..'9'. ensure Result = in_range('0','9') is_decimal_digit: BOOLEAN -- Belongs to '0'..'9'. ensure Result = in_range('0','9') is_binary_digit: BOOLEAN -- Belongs to '0'..'1'. ensure Result = in_range('0','1') is_octal_digit: BOOLEAN -- Belongs to '0'..'7'. ensure Result = in_range('0','7') is_hexadecimal_digit: BOOLEAN -- Is it one character of "0123456789abcdefABCDEF" ? ensure Result = ("0123456789abcdefABCDEF").has(Current) is_lower: BOOLEAN -- Is item lowercase? is_upper: BOOLEAN -- Is item uppercase? is_separator: BOOLEAN -- True when character is a separator. is_letter_or_digit: BOOLEAN -- Is character a letter or digit ? ensure valid: Result = (is_letter or is_digit) is_ascii: BOOLEAN -- Is character a 8-bit ASCII character? is_bit: BOOLEAN -- True for 0 and 1. next: CHARACTER -- Give the next character (the following code); previous: CHARACTER -- Give the next character (the following code); require code > 0 feature(s) from CHARACTER -- Conversions : to_bit: BIT_N Character_bits to_hexadecimal: STRING -- Create a new STRING giving the code in hexadecimal. -- For example : -- (255).to_character.to_hexadecimal gives "FF". -- Note: see to_hexadecimal_in to save memory. ensure Result.count = 2 to_hexadecimal_in (str: STRING) -- Append the equivalent of to_hexadecimal at the end of -- str. Thus you can save memory because no other -- STRING is allocate for the job. ensure str.count = 2 + old str.count end of expanded CHARACTER