summaryrefslogtreecommitdiffstats
path: root/gcc/diagnostic.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/diagnostic.h')
-rw-r--r--gcc/diagnostic.h39
1 files changed, 23 insertions, 16 deletions
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 360b64bfa47..925134af48f 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -130,9 +130,8 @@ struct output_buffer
printer_fn format_decoder;
};
-/* Current state of the diagnostic_context' output_buffer. This macro
- accepts both `diagnostic_context *' and `output_buffer *'. */
-#define output_buffer_state(BUFFER) ((output_buffer *)(BUFFER))->state
+/* Current state of an output_buffer. */
+#define output_buffer_state(BUFFER) (BUFFER)->state
/* The stream attached to the output_buffer, where the formatted
diagnostics will ultimately go. Works only on `output_buffer *'. */
@@ -157,6 +156,16 @@ struct output_buffer
#define output_message_text(BUFFER) \
((const char *) obstack_base (&(BUFFER)->obstack))
+/* Client supplied function used to decode formats. */
+#define output_format_decoder(BUFFER) (BUFFER)->format_decoder
+
+/* Prefixing rule used in formatting a diagnostic message. */
+#define output_prefixing_rule(BUFFER) (BUFFER)->state.prefixing_rule
+
+/* Maximum characters per line in automatic line wrapping mode.
+ Zero means don't wrap lines. */
+#define output_line_cutoff(BUFFER) (BUFFER)->state.ideal_maximum_length
+
/* This data structure bundles altogether any information relevant to
the context of a diagnostic message. */
struct diagnostic_context
@@ -224,31 +233,29 @@ struct diagnostic_context
/* Extension hook for client. */
#define diagnostic_auxiliary_data(DC) (DC)->x_data
-/* Client supplied function used to decode formats. Can operate on both
- `output_buffer *' and `diagnostic_context *'. */
-#define diagnostic_format_decoder(DC) ((output_buffer *)(DC))->format_decoder
+/* Same as output_format_decoder. Works on 'diagnostic_context *'. */
+#define diagnostic_format_decoder(DC) output_format_decoder (&(DC)->buffer)
-/* Prefixing rule used in formatting a diagnostic message. Accepts both
- `output_buffer *' and `diagnostic_context *'. */
-#define diagnostic_prefixing_rule(DC) \
- ((output_buffer *)(DC))->state.prefixing_rule
+/* Same as output_prefixing_rule. Works on 'diagnostic_context *'. */
+#define diagnostic_prefixing_rule(DC) output_prefixing_rule (&(DC)->buffer)
/* Maximum characters per line in automatic line wrapping mode.
Zero means don't wrap lines. */
-#define diagnostic_line_cutoff(DC) \
- ((output_buffer *)(DC))->state.ideal_maximum_length
+#define diagnostic_line_cutoff(DC) output_line_cutoff (&(DC)->buffer)
+
+/* Same as output_buffer_state, but works on 'diagnostic_context *'. */
+#define diagnostic_state(DC) output_buffer_state (&(DC)->buffer)
+
+#define diagnostic_buffer (&global_dc->buffer)
/* This diagnostic context is used by front-ends that directly output
diagnostic messages without going through `error', `warning',
and similar functions. */
extern diagnostic_context *global_dc;
-/* This will be removed shortly. */
-extern output_buffer *diagnostic_buffer;
-
/* The total count of a KIND of diagnostics meitted so far. */
#define diagnostic_kind_count(DC, DK) \
- ((output_buffer *)(DC))->state.diagnostic_count[(int) (DK)]
+ (DC)->buffer.state.diagnostic_count[(int) (DK)]
/* The number of errors that have been issued so far. Ideally, these
would take an output_buffer as an argument. */
OpenPOWER on IntegriCloud