aboutsummaryrefslogtreecommitdiff
path: root/gcc/diagnostic.h
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@codesourcery.com>2000-07-12 00:48:02 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2000-07-12 00:48:02 +0000
commit406a65d0db1eb80f45a7a3bf8c85f534e1a3960a (patch)
treec38523617f116875125b603865e8c328df959454 /gcc/diagnostic.h
parent7bb41c5a6ab011b1e2d24481b3cf8e839ea597af (diff)
downloadgcc-406a65d0db1eb80f45a7a3bf8c85f534e1a3960a.zip
gcc-406a65d0db1eb80f45a7a3bf8c85f534e1a3960a.tar.gz
gcc-406a65d0db1eb80f45a7a3bf8c85f534e1a3960a.tar.bz2
diagnostic.c (save_output_state): Remove.
2000-07-12 Gabriel Dos Reis <gdr@codesourcery.com> * diagnostic.c (save_output_state): Remove. (restore_output_state): Likewise. (clear_text_info): New function. (clear_diagnostic_info): Likewise. (output_text_length, is_starting_newline, output_prefix, line_wrap_cutoff, ideal_line_wrap_cutoff, prefix_was_emitted_for, prefixing_policy, output_buffer_ptr_to_format_args): New macros (set_real_maximum_length, output_set_maximum_length, output_set_prefix, output_get_prefix, output_set_maximum_length, output_destroy_prefix, init_output_buffer, reshape_diagnostic_buffer, output_space_left, output_emit_prefix, output_add_newline, output_add_character, output_add_space, output_append_r, output_append, wrap_text, output_format, output_do_printf, output_printf, output_do_verbatim, output_verbatim, verbatim): Use them. (output_clear): Split into cleat_text_info and clear_diagnostic_info. (struct output_state): Move to... * diagnostic.h: ...Here (struct output_buffer): Adjust. From-SVN: r34975
Diffstat (limited to 'gcc/diagnostic.h')
-rw-r--r--gcc/diagnostic.h49
1 files changed, 28 insertions, 21 deletions
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 5b082a2..a81aa8a 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -36,18 +36,11 @@ typedef struct output_buffer output_buffer;
everything goes well. */
typedef int (*printer_fn) PARAMS ((output_buffer *));
-/* The output buffer datatype. This is best seen as an abstract datatype. */
-struct output_buffer
+/* This data structure encapulates an output_buffer's state. */
+typedef struct
{
- /* Internal data. These fields should not be accessed directly by
- front-ends. */
-
- /* The obstack where the text is built up. */
- struct obstack obstack;
/* The prefix for each new line. */
const char *prefix;
- /* The amount of characters output so far. */
- int line_length;
/* The real upper bound of number of characters per line, taking into
accompt the case of a very very looong prefix. */
int maximum_length;
@@ -62,25 +55,39 @@ struct output_buffer
o DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE: emit current PREFIX each time
a physical line is started. */
int prefixing_rule;
-
- /* Public fields. These are used by front-ends to extract formats and
- arguments from the variable argument-list passed to output_format. */
-
/* The current char to output. Updated by front-end (*format_map) when
it is called to report front-end printer for a specified format. */
const char *cursor;
- /* Variable argument-list for formatting. */
- va_list format_args;
+ /* A pointer to the variable argument-list for formatting. */
+ va_list *format_args;
+} output_state;
+
+/* The output buffer datatype. This is best seen as an abstract datatype. */
+struct output_buffer
+{
+ /* Internal data. These fields should not be accessed directly by
+ front-ends. */
+
+ /* The obstack where the text is built up. */
+ struct obstack obstack;
+ /* The amount of characters output so far. */
+ int line_length;
+ /* The current state of the buffer. */
+ output_state state;
};
-/* If non-NULL, this function formats data in the BUFFER.
- BUFFER->CURSOR points to a format code. LANG_PRINTER should
- call output_add_string (and related functions) to add data to
+#define output_buffer_text_cursor(BUFFER) (BUFFER)->state.cursor
+#define output_buffer_format_args(BUFFER) *((BUFFER)->state.format_args)
+
+/* If non-NULL, this function formats data in the BUFFER. When called,
+ output_buffer_text_cursor (BUFFER) points to a format code. LANG_PRINTER
+ should call output_add_string (and related functions) to add data to
the BUFFER. LANG_PRINTER can read arguments from
- BUFFER->FORMAT_ARGS using VA_ARG. If the BUFFER needs
+ output_buffer_format_args (BUFFER) using VA_ARG. If the BUFFER needs
additional characters from the format string, it should advance
- the BUFFER->CURSOR as it goes. When LANG_PRINTER returns,
- BUFFER->CURSOR should point to the last character processed. */
+ the output_buffer_text_cursor (BUFFER) as it goes. When LANG_PRINTER
+ returns, output_buffer_text_cursor (BUFFER) should point to the last
+ character processed. */
extern printer_fn lang_printer;