class interface UT_CHARACTER_FORMATTER

feature(s) from KL_IMPORTED_STRING_ROUTINES
   --  Access

   STRING_: KL_STRING_ROUTINES
      --  Routines that ought to be in class STRING

      ensure
         string_routines_not_void: Result /= Void

feature(s) from KL_IMPORTED_OUTPUT_STREAM_ROUTINES
   --  Access

   OUTPUT_STREAM_: KL_OUTPUT_STREAM_ROUTINES
      --  Routines that ought to be in class OUTPUT_STREAM

      ensure
         output_stream_routines_not_void: Result /= Void

feature(s) from KL_IMPORTED_OUTPUT_STREAM_ROUTINES
   --  Type anchors

   OUTPUT_STREAM_TYPE: OUTPUT_STREAM

feature(s) from UT_IMPORTED_FORMATTERS
   --  Access

   INTEGER_FORMATTER_: UT_INTEGER_FORMATTER
      --  Formatting routines that ought
      --  to be in class INTEGER

      ensure
         integer_formatter_not_void: Result /= Void

   CHARACTER_FORMATTER_: UT_CHARACTER_FORMATTER
      --  Formatting routines that ought
      --  to be in class CHARACTER

      ensure
         character_formatter_not_void: Result /= Void

   BOOLEAN_FORMATTER_: UT_BOOLEAN_FORMATTER
      --  Formatting routines that ought
      --  to be in class BOOLEAN

      ensure
         boolean_formatter_not_void: Result /= Void

   STRING_FORMATTER_: UT_STRING_FORMATTER
      --  Formatting routines that ought
      --  to be in class STRING

      ensure
         string_formatter_not_void: Result /= Void

   ARRAY_FORMATTER_: UT_ARRAY_FORMATTER
      --  Formatting routines that ought
      --  to be in class ARRAY

      ensure
         array_formatter_not_void: Result /= Void

feature(s) from UT_CHARACTER_FORMATTER
   --  Access

   eiffel_character_out (c: CHARACTER): STRING
      --  Formatted version of c; if c is not
      --  printable, it is replaced by its escaped
      --  character sequence as described in ETL,
      --  section 25.15, page 422;
      --  Return a new string at each call.
      --  Regexp: [ !#$&(-~]|%[BFNRTU%'"]|%/[0-9]+/

      ensure
         eiffel_character_out_not_void: Result /= Void

   quoted_eiffel_character_out (c: CHARACTER): STRING
      --  Formatted version of c surrounded by single
      --  quotes; if c is not printable, it is replaced
      --  by its escaped character sequence as described
      --  in ETL, section 25.15, page 422;
      --  Return a new string at each call.
      --  Regexp: \'([ !#$&(-~]|%[BFNRTU%'"]|%/[0-9]+/)\'

      ensure
         quoted_eiffel_character_out_not_void: Result /= Void

feature(s) from UT_CHARACTER_FORMATTER
   --  String handling

   append_eiffel_character (a_string: STRING; c: CHARACTER)
      --  Append c to a_string; if c is not printable,
      --  it is replaced by its escaped character sequence
      --  as described in ETL, section 25.15, page 422.

      require
         a_string_not_void: a_string /= Void

   append_quoted_eiffel_character (a_string: STRING; c: CHARACTER)
      --  Append c surrounded by single quotes to a_string;
      --  if c is not printable, it is replaced by its
      --  escaped character sequence as described in ETL,
      --  section 25.15, page 422.

      require
         a_string_not_void: a_string /= Void

feature(s) from UT_CHARACTER_FORMATTER
   --  File handling

   put_eiffel_character (a_file: like OUTPUT_STREAM_TYPE; c: CHARACTER)
      --  Write c to a_file; if c is not printable,
      --  it is replaced by its escaped character sequence
      --  as described in ETL, section 25.15, page 422.

      require
         a_file_not_void: a_file /= Void;
         a_file_is_open_write: OUTPUT_STREAM_.is_open_write(a_file)

   put_quoted_eiffel_character (a_file: like OUTPUT_STREAM_TYPE; c: CHARACTER)
      --  Write c surrounded by single quotes to a_string;
      --  if c is not printable, it is replaced by its
      --  escaped character sequence as described in ETL,
      --  section 25.15, page 422.

      require
         a_file_not_void: a_file /= Void;
         a_file_is_open_write: OUTPUT_STREAM_.is_open_write(a_file)


end of UT_CHARACTER_FORMATTER