expanded class CHARACTER

Features exported to INTERNALS_HANDLER

Note: An Eiffel CHARACTER is mapped as a C unsigned char or as a Java Byte.

Direct parents

conformant parents

COMPARABLE, HASHABLE

non-conformant parents

PLATFORM

Summary

exported features

Conversions:

Object Printing:

Hashing:

Miscellaneous:

Details

to_integer: INTEGER_8

Sign-extended conversion.

code: INTEGER_16

ASCII code of Current. (No Sign-extended conversion.)

ensure

    < (other: CHARACTER): BOOLEAN

    Comparison using code.

    require

    • other_exists: other /= Void

    ensure

    • asymmetric: Result implies not (other < Current)

    <= (other: CHARACTER): BOOLEAN

    Comparison using code.

    require

    • other_exists: other /= Void

    ensure

    • definition: Result = (Current < other or is_equal(other))

    > (other: CHARACTER): BOOLEAN

    Comparison using code.

    require

    • other_exists: other /= Void

    ensure

    • definition: Result = (other < Current)

    >= (other: CHARACTER): BOOLEAN

    Comparison using code.

    require

    • other_exists: other /= Void

    ensure

    • definition: Result = (other <= Current)

    value: INTEGER_8

    Gives the value of a decimal digit.

    require

    • is_digit

    ensure

    • Result.in_range(0, 9)

    decimal_value: INTEGER_8

    Gives the value of a decimal digit.

    require

    • is_digit

    ensure

    • Result.in_range(0, 9)

    binary_value: INTEGER_8

    Gives the value of a binary digit.

    require

    • is_binary_digit

    ensure

    • Result.in_range(0, 1)

    octal_value: INTEGER_8

    Gives the value of an octal digit.

    require

    • is_octal_digit

    ensure

    • Result.in_range(0, 7)

    hexadecimal_value: INTEGER_8

    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

    to_upper: CHARACTER

    Conversion to the corresponding upper case.

    to_lower: CHARACTER

    Conversion to the corresponding lower case.

    is_letter: BOOLEAN

    Is it a letter ('a' .. 'z' or 'A' .. 'Z') ?

    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 = (once "0123456789abcdefABCDEF").has(Current)

    is_lower: BOOLEAN

    Is it some lowercase letter ('a'..'z')?

    is_upper: BOOLEAN

    Is it some uppercase letter ('A'..'Z')?

    is_separator: BOOLEAN

    True when character is a separator.

    is_letter_or_digit: BOOLEAN

    Is it a letter (see is_letter) or a digit (see is_digit) ?

    ensure

    • definition: 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)

    require

      previous: CHARACTER

      Give the previous character (the code before)

      require

        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

        to_string: STRING

        ensure

        • Result.count = 1
        • Result.first = Current

        out_in_tagged_out_memory

        Append terse printable represention of current object in tagged_out_memory.

        ensure

        • not_cleared: tagged_out_memory.count >= old tagged_out_memory.count
        • append_only: (old tagged_out_memory.twin).is_equal(tagged_out_memory.substring(1, old tagged_out_memory.count))

        fill_tagged_out_memory

        Append a viewable information in tagged_out_memory in order to affect the behavior of out, tagged_out, etc.

        hash_code: INTEGER

        The hash-code value of Current.

        ensure

        • good_hash_value: Result >= 0

        is_alpha: BOOLEAN

        See is_letter (yes this is just a call to is_letter). Isn't is_letter better English ;-)

        ensure

        • Result = is_letter

        deferred is_equal (other: CHARACTER): BOOLEAN

        Is other attached to an object considered equal to current object ?

        require

        • other /= Void

        ensure

        • Result implies hash_code = other.hash_code
        • commutative: generating_type = other.generating_type implies Result = other.is_equal(Current)

        is_equal (other: CHARACTER): BOOLEAN

        Is other attached to an object considered equal to current object ?

        require

        • other /= Void

        ensure

        • trichotomy: Result = (not (Current < other) and not (other < Current))
        • commutative: generating_type = other.generating_type implies Result = other.is_equal(Current)

        in_range (lower: CHARACTER, upper: CHARACTER): BOOLEAN

        Return True if Current is in range [lower..upper]

        See also min, max, compare.

        ensure

        • Result = (Current >= lower and Current <= upper)

        compare (other: CHARACTER): INTEGER

        If current object equal to other, 0 if smaller, -1; if greater, 1.

        See also min, max, in_range.

        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: CHARACTER): INTEGER

        If current object equal to other, 0 if smaller, -1; if greater, 1.

        See also min, max, in_range.

        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: CHARACTER): CHARACTER

        Minimum of Current and other.

        See also max, in_range.

        require

        • other /= Void

        ensure

        • Result <= Current and then Result <= other
        • compare(Result) = 0 or else other.compare(Result) = 0

        max (other: CHARACTER): CHARACTER

        Maximum of Current and other.

        See also min, in_range.

        require

        • other /= Void

        ensure

        • Result >= Current and then Result >= other
        • compare(Result) = 0 or else other.compare(Result) = 0