coan  6.0.1
A C/C++ Configuration Analyzer
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
diagnostic.h File Reference
#include "prohibit.h"
#include "cloner.h"
#include <sstream>
#include <list>
#include <memory>

Go to the source code of this file.

Classes

struct  emit
 The tag class is inserted in a diagnostic_base to tell it to emit itself. More...
 
struct  defer
 The tag class is inserted in a diagnostic_base to tell it to defer itself. More...
 
struct  diagnostic_base
 A base class for diagnostic classes. More...
 
struct  diagnostic< Level, Id >
 `template struct diagnostic<Level,Id> generically encapsulates a type of diagnostic. More...
 
struct  progress_msg< Id >
 template struct progress_msg<Id>` generically encapsulates a progress diagnostic. More...
 
struct  info_msg< Id >
 template struct info_msg generically encapsulates an informational diagnostic. More...
 
struct  warning_msg< Id >
 template struct warning_msg<Id> generically encapsulates a warning diagnostic. More...
 
struct  error_msg< Id >
 template struct error_msg<Id> generically encapsulates an error diagnostic. More...
 
struct  abend_msg< Id >
 template struct abend_msg generically encapsulates a fatal error diagnostic. More...
 
struct  progress_summary_msg< Id >
 template struct progress_summary_msg<Id> generically encapsulates a progress summary diagnostic. More...
 
struct  info_summary_msg< Id >
 template struct info_summary_msg<Id> generically encapsulates an informational summary diagnostic. More...
 
struct  warning_summary_msg< Id >
 template struct warning_summary_msg<Id> generically encapsulates a warning summary diagnostic. More...
 
struct  warning_unconditional_error_input
 `struct warning_unconditional_error_input' encapsulates a diagnostic for an error directive input unconditionally, i.e. not in the scope of #if More...
 
struct  warning_error_generated
 `template struct warning_error_generated_input' encapsulates a diagnostic for error directive output conditionally, i.e. within the scope of an #if More...
 
struct  warning_unconditional_error_output
 struct warning_unconditional_error_output encapsulates a diagnostic for an error directive output unconditionally, i.e. not in the scope of any #if More...
 

Typedefs

using progress_processing_file = progress_msg< 1 >
 Report file being processed.
 
using progress_building_tree = progress_msg< 2 >
 Peport building the input tree.
 
using progress_added_file = progress_msg< 3 >
 Report added a file to input.
 
using progress_file_tracker = progress_msg< 4 >
 Report total input files found.
 
using progress_got_options = progress_msg< 5 >
 Report a commandline argument parsed.
 
using info_duplicate_mask = info_msg< 1 >
 Report a duplicate diagnostic selection option.
 
using info_symlink = info_msg< 2 >
 Report that input file or directory is symbolic link.
 
using info_retrospective_redefinition = info_msg< 3 >
 Report a #define or #undef that retrospectively affects the meaning of another symbol.
 
using warning_duplicate_args = warning_msg< 1 >
 Report that same argument occurs for multiple --define or --undefine options.
 
using warning_deleted_contradiction = warning_msg< 2 >
 Report that an input #define or #undef directive was deleted. More...
 
using warning_commented_contradiction = warning_msg< 3 >
 Report that an input #define or #undef directive was commented out. More...
 
using warning_errored_contradiction = warning_msg< 4 >
 Report that an input #define or #undef directive was converted to an #error. More...
 
using warning_differing_redef = warning_msg< 5 >
 Report that an in-source #define defines a symbol differently from a prior one.
 
using warning_undefing_defined = warning_msg< 6 >
 Report that an in-source #undef undefines a symbol previously defined by an in-source #define.
 
using warning_garbage_after_directive = warning_msg< 10 >
 Report garbage text was input following a directive.
 
using warning_missing_eof_newline = warning_msg< 11 >
 Report a newline is missing at end of input.
 
using warning_infinite_regress = warning_msg< 12 >
 Report a symbol has a circular definition.
 
using warning_verbose_only = warning_msg< 13 >
 Report the --verbose option is mixed with the --gag option.
 
using warning_zero_divide = warning_msg< 14 >
 Report a divide by zero was found in an expression.
 
using warning_dir_ignored = warning_msg< 15 >
 Report directory name ignored on input when --recurse not not specified.
 
using warning_unknown_directive = warning_msg< 16 >
 Report an unknown preprocessor directive.
 
using warning_invalid_include = warning_msg< 17 >
 Report a problematic argument to an #include directive.
 
using warning_int_overflow = warning_msg< 18 >
 Report that an integer constant evaluates > INT_MAX.
 
using warning_missing_terminator = warning_msg< 19 >
 Report missing terminator quotation.
 
using warning_negative_shift = warning_msg< 20 >
 Report negative shift count.
 
using warning_forced_unsigned = warning_msg< 21 >
 Report a huge integer constant forced to be unsigned.
 
using warning_sign_changed = warning_msg< 22 >
 Report integer sign changed by promotion.
 
using warning_shift_overflow = warning_msg< 23 >
 Report a that shift count is >= the width of the shifted quantity.
 
using warning_char_constant_too_long = warning_msg< 24 >
 Report a character constant too long for current locale.
 
using warning_mulitbyte_char_constant = warning_msg< 25 >
 Report that character constant goes multi-byte.
 
using warning_variadic_macros_unsupported = warning_msg< 26 >
 Apologize that variadic macro expansion is unsupported.
 
using warning_transient_symbol_added = warning_msg< 27 >
 
using warning_no_syms = warning_msg< 28 >
 Report that the commandline does not specify any --define or --undef
 
using warning_broken_symlink = warning_msg< 29 >
 Report that input file is a broken symbolic link.
 
using warning_no_transients_used = warning_msg< 30 >
 Report that the unsafe --no-transients option is used.
 
using warning_calling_unconfigured = warning_msg< 31 >
 Report macro ref on unconfigured symbol.
 
using warning_no_argument = warning_msg< 32 >
 Report a directive that lacks a required argument.
 
using warning_not_a_line_number = warning_msg< 33 >
 Report a #line directive with argument not a positive integer.
 
using warning_inconsistent_calls = warning_msg< 34 >
 Report inconsistent argument lists for unconfigured symbol references.
 
using warning_incomplete_expansion = warning_msg< 35 >
 Report a macro reference not fully expanded.
 
using error_orphan_elif = error_msg< 1 >
 Report an orphan #elif was found in input.
 
using error_orphan_else = error_msg< 2 >
 Report an orphan #else was found in input.
 
using error_orphan_endif = error_msg< 3 >
 Report an orphan #endif was found in input.
 
using error_eof_too_soon = error_msg< 4 >
 Report unexpected end of input.
 
using error_nothing_to_do = error_msg< 6 >
 Report that the commandline does not specify anything to do.
 
using error_one_file_only = error_msg< 7 >
 
using error_invalid_args = error_msg< 8 >
 Report that the commandline options are not a valid combination.
 
using error_usage = error_msg< 9 >
 Report that the commandline is syntactically invalid.
 
using error_too_deep = error_msg< 10 >
 Report that #if nesting exceeds maxdepth in input.
 
using error_multiple_argfiles = error_msg< 11 >
 Report that the --file option occurs more than once.
 
using error_garbage_arg = error_msg< 12 >
 
using error_not_identifier = error_msg< 13 >
 Report that a valid preprocessor identifier was not found where required.
 
using error_unbalanced_paren = error_msg< 14 >
 Report unbalanced parenthesis.
 
using error_if_without_cond = error_msg< 15 >
 Report #if or #elif has no argument.
 
using error_cant_get_realpath = error_msg< 16 >
 Report failure from realpath()
 
using error_malformed_macro = error_msg< 17 >
 Report a malformed macro parameter list.
 
using error_mismatched_macro_args = error_msg< 18 >
 Report wrong number of macro arguments for symbol.
 
using error_macro_call_on_undefined = error_msg< 19 >
 Report attempting macro-ref on undefined symbol.
 
using error_ternary_cond_incomplete = error_msg< 20 >
 Report an incomplete ternary conditional operator.
 
using error_ill_formed_expression = error_msg< 21 >
 Report an ill-formed expression.
 
using error_empty_symbol = error_msg< 22 >
 Report a symbol that evaluates to an empty string is an operand in an expression.
 
using error_infinite_regress = error_msg< 23 >
 Report an infinite regress in the global configuration.
 
using error_misplaced_token_paste = error_msg< 24 >
 Report a ## operator at start or end of definition.
 
using error_stringify_non_param = error_msg< 25 >
 Report a # operator not preceding a parameter for function-like macro.
 
using error_non_term = error_msg< 26 >
 Report a non-expression in subexpression context.
 
using error_bad_token_paste = error_msg< 27 >
 Report that token-pasting does not yield a token.
 
using abend_cant_open_output = abend_msg< 1 >
 Report cannot open an output file.
 
using abend_cant_open_input = abend_msg< 2 >
 Report cannot open an input file.
 
using abend_eof_in_filename = abend_msg< 3 >
 Report end of input encountered while reading a quoted filename. a closing quotation was not found.
 
using abend_confused = abend_msg< 4 >
 Report an internal logic abend.
 
using abend_cant_read_input = abend_msg< 5 >
 Report read error on input.
 
using abend_cant_write_file = abend_msg< 6 >
 Report write error on output.
 
using abend_no_file = abend_msg< 7 >
 Report can't identify file or directory.
 
using abend_illegal_filename = abend_msg< 8 >
 Report invalid filename input.
 
using abend_cant_delete_file = abend_msg< 9 >
 Report failure to delete a file.
 
using abend_cant_rename_file = abend_msg< 10 >
 Report failure to rename a file.
 
using abend_no_tempfile = abend_msg< 11 >
 Report cannot create a temporary file.
 
using abend_cant_open_dir = abend_msg< 12 >
 Report cannot open directory.
 
using abend_cant_read_dir = abend_msg< 13 >
 Report read error on directory.
 
using abend_invalid_spin_dir = abend_msg< 14 >
 Report that a spin directory includes, is included by or is same as an input directory.
 
using abend_cant_get_cwd = abend_msg< 15 >
 Report can't get the current working directory.
 
using abend_cant_create_dir = abend_msg< 16 >
 Report can't create directory.
 
using progress_summary_all_done = progress_summary_msg< 1 >
 Report processing complete.
 
using info_summary_files_reached = info_summary_msg< 1 >
 Report total files reached.
 
using info_summary_files_dropped = info_summary_msg< 2 >
 Report total files abandoned due to errors.
 
using info_summary_summary_dropped_lines = info_summary_msg< 3 >
 Report that input lines were dropped.
 
using info_summary_summary_changed_lines = info_summary_msg< 4 >
 Report that input lines were changed.
 
using warning_summary_summary_errored_lines = warning_summary_msg< 1 >
 Report that input lines were converted to #errors
 
using warning_summary_summary_error_output = warning_summary_msg< 2 >
 Report that unconditional #error lines were output.
 

Enumerations

enum  severity {
  severity::none = 0, severity::progress = 1, severity::info = 2, severity::warning = 4,
  severity::error = 8, severity::abend = 16, severity::summary = 32, severity::summary_progress = summary | progress,
  severity::summary_info = summary | info, severity::summary_warning = summary | warning
}
 Enumerated constants representing the severities of diagnostics. More...
 

Detailed Description

This file defines types supporting the production of diagnostics.

Definition in file diagnostic.h.

Typedef Documentation

Report that the argument to a --define or --undefine option contains mysterious characters.

Definition at line 748 of file diagnostic.h.

Report that the commandline invalidly specifies multiple input files without the --replace option

Definition at line 736 of file diagnostic.h.

Report that an input #define or #undef directive was commented out.

Report that an input #define or #undef directive was commented out on output because it contradicts a --define or --undefine option togther with --contradict comment

Definition at line 611 of file diagnostic.h.

Report that an input #define or #undef directive was deleted.

Report that an input #define or #undef directive was deleted on output because it contradicts a --define or --undefine option together with --contradict delete

Definition at line 603 of file diagnostic.h.

Report that an input #define or #undef directive was converted to an #error.

Report that an input #define or #undef directive was converted to a #error on output because it contradicts a --define or --undefine option together with --contradict error

Definition at line 619 of file diagnostic.h.

Report that a symbol has been transiently defined or undefined for the duration of the current source file

Definition at line 705 of file diagnostic.h.

Enumeration Type Documentation

enum severity
strong

Enumerated constants representing the severities of diagnostics.

Enumerator
none 

No severity.

progress 

A progress diagnostic.

info 

An informational diagnostic.

warning 

A warning diagnostic.

error 

An error diagnostic.

abend 

A fatal error disgnostic.

summary 

A summary diagnostic.

summary_progress 

A progress summary.

summary_info 

An informational summary.

summary_warning 

A warning summary.

Definition at line 51 of file diagnostic.h.