deferred class interface INPUT_STREAM
--
-- This abstract class is the superclass of all classes
-- representing an input stream of bytes.
--
feature(s) from INPUT_STREAM
-- State of the stream :
is_connected: BOOLEAN
-- True when the corresponding stream is connected
-- to some physical input device.
end_of_input: BOOLEAN
-- Has end-of-input been reached ?
-- True when the last character has been read.
require
is_connected
feature(s) from INPUT_STREAM
-- To read one character at a time :
read_character
-- Read a character and assign it to last_character.
require
not end_of_input
ensure
not push_back_flag
last_character: CHARACTER
-- Last character read with read_character.
require
is_connected
push_back_flag: BOOLEAN
-- True in one char is already pushed back.
unread_character
-- Un-read the last character read.
--
require
not push_back_flag
ensure
push_back_flag
feature(s) from INPUT_STREAM
-- Skipping separators :
skip_separators
-- Stop doing read_character as soon as end_of_file is reached
-- or as soon as last_character is not is_separator.
-- When first character is already not is_separator nothing
-- is done.
skip_separators_using (separators: STRING)
-- Same job as skip_separators using separators.
require
separators /= Void
feature(s) from INPUT_STREAM
-- To read one number at a time :
read_integer
-- Read an integer according to the Eiffel syntax.
-- Make result available in last_integer.
-- Heading separators are automatically skipped using
-- is_separator of class CHARACTER.
-- Trailing separators are not skipped.
require
not end_of_input
last_integer: INTEGER
-- Last integer read using read_integer.
read_real
-- Read a REAL and make the result available in last_real
-- and in last_double.
-- The integral part is available in last_integer.
require
not end_of_input
last_real: REAL
-- Last real read with read_real.
read_double
-- Read a DOUBLE and make the result available in
-- last_double.
require
not end_of_input
last_double: DOUBLE
-- Last double read with read_double.
feature(s) from INPUT_STREAM
-- To read one line or one word at a time :
last_string: STRING
-- Access to a unique STRING to get the result computed
-- with read_line, read_word or newline.
-- No new STRING is allocated.
read_line
-- Read a complete line ended by '%N' or end_of_input.
-- Make the result available in last_string.
-- Character '%N' is not added in last_string.
--
-- NOTE: the result is available in last_string without any
-- memory allocation.
require
not end_of_input
read_word
-- Read a word using is_separator of class CHARACTER.
-- Result is available in last_string (no allocation
-- of memory).
-- Heading separators are automatically skipped.
-- Trailing separators are not skipped (last_character is
-- left on the first one).
-- If end_of_input is encountered, Result can be the
-- empty string.
require
not end_of_input
newline
-- Consume input until newline ('%N') is found.
-- Corresponding STRING is stored in last_string.
feature(s) from INPUT_STREAM
-- Other features :
read_line_in (str: STRING)
-- Same jobs as read_line but storage is directly done in str.
--
require
not end_of_input
read_word_using (separators: STRING)
-- Same jobs as read_word using separators.
require
not end_of_input;
separators /= Void
read_tail_in (str: STRING)
-- Read all remaining character of the file in str.
require
str /= Void
ensure
end_of_input
end of deferred INPUT_STREAM