expanded class CHARACTER

All features

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:

Maximum:

Minimum:

Bits:

Details

to_integer: INTEGER_8

Sign-extended conversion.

code: INTEGER_16

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

ensure

  • Result.in_range(Minimum_character_code, Maximum_character_code)

< (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

  • code < Maximum_character_code

previous: CHARACTER

Give the previous character (the code before)

require

  • code > Minimum_character_code

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

Maximum_character_code: INTEGER_16

Largest supported code for CHARACTER values.

ensure

  • meaningful: Result >= 127

Maximum_integer_8: INTEGER_8

Largest supported value of type INTEGER_8.

Maximum_integer_16: INTEGER_16

Largest supported value of type INTEGER_16.

Maximum_integer: INTEGER

Largest supported value of type INTEGER/INTEGER_32.

Maximum_integer_32: INTEGER

Largest supported value of type INTEGER/INTEGER_32.

Maximum_integer_64: INTEGER_64

Largest supported value of type INTEGER_64.

Maximum_real_32: REAL_32

Largest non-special (no NaNs nor infinity) supported value of type REAL_32.

Maximum_real: REAL

Largest non-special (no NaNs nor infinity) supported value of type REAL. Just to give an idea of this value: 1.79769313486231570....e+308

Maximum_real_64: REAL

Largest non-special (no NaNs nor infinity) supported value of type REAL. Just to give an idea of this value: 1.79769313486231570....e+308

Maximum_real_80: REAL_EXTENDED

Largest supported value of type REAL_80.

ensure

  • meaningful: Result >= Maximum_real

Minimum_character_code: INTEGER_16

Smallest supported code for CHARACTER values.

ensure

  • meaningful: Result <= 0

Minimum_integer_8: INTEGER_8

Smallest supported value of type INTEGER_8.

Minimum_integer_16: INTEGER_16

Smallest supported value of type INTEGER_16.

Minimum_integer: INTEGER

Smallest supported value of type INTEGER/INTEGER_32.

Minimum_integer_32: INTEGER

Smallest supported value of type INTEGER/INTEGER_32.

Minimum_integer_64: INTEGER_64

Smallest supported value of type INTEGER_64.

Minimum_real_32: REAL_32

Smallest non-special (no NaNs nor infinity) supported value of type REAL_32.

Minimum_real: REAL

Smallest non-special (no NaNs nor infinity) supported value of type REAL. Just to give an idea of this value: -1.79769313486231570....e+308

Minimum_real_64: REAL

Smallest non-special (no NaNs nor infinity) supported value of type REAL. Just to give an idea of this value: -1.79769313486231570....e+308

Minimum_real_80: REAL

Smallest supported value of type REAL_80.

ensure

  • meaningful: Result <= 0.0

Boolean_bits: INTEGER

Number of bits in a value of type BOOLEAN.

ensure

  • meaningful: Result >= 1

Character_bits: INTEGER

Number of bits in a value of type CHARACTER.

ensure

  • meaningful: Result >= 1
  • large_enough: 2.to_integer ^ Result >= Maximum_character_code

Integer_bits: INTEGER

Number of bits in a value of type INTEGER.

ensure

  • integer_definition: Result = 32

Real_bits: INTEGER

Number of bits in a value of type REAL.

Pointer_bits: INTEGER

Number of bits in a value of type POINTER.