|
| | Logger (const OutputFunction &errors=[](const std::string &msg){ std::cerr<< msg<< std::endl;}, const OutputFunction &warnings=[](const std::string &){}) |
| | Construct a Logger with optional error and warning output functions, defaults stream errors to std::cerr and suppress warnings. More...
|
| |
| | ~Logger () |
| |
| bool | error (const std::string &message, const CodeLocation &lineCol=CodeLocation(0, 0)) |
| | Log a compiler error and its offending code location. If the offending location is (0,0), the message is treated as not having an associated code location. More...
|
| |
| bool | error (const std::string &message, const ax::ast::Node *node) |
| | Log a compiler error using the offending AST node. Used in AST traversal. More...
|
| |
| bool | warning (const std::string &message, const CodeLocation &lineCol=CodeLocation(0, 0)) |
| | Log a compiler warning and its offending code location. If the offending location is (0,0), the message is treated as not having an associated code location. More...
|
| |
| bool | warning (const std::string &message, const ax::ast::Node *node) |
| | Log a compiler warning using the offending AST node. Used in AST traversal. More...
|
| |
| size_t | errors () const |
| | Returns the number of errors that have been encountered. More...
|
| |
| size_t | warnings () const |
| | Returns the number of warnings that have been encountered. More...
|
| |
| bool | hasError () const |
| | Returns true if an error has been found, false otherwise. More...
|
| |
| bool | hasWarning () const |
| | Returns true if a warning has been found, false otherwise. More...
|
| |
| bool | atErrorLimit () const |
| | Returns true if it has errored and the max errors has been hit. More...
|
| |
| void | clear () |
| | Clear the tree-code mapping and reset the number of errors/warnings. More...
|
| |
| void | setWarningsAsErrors (const bool warnAsError=false) |
| | Set any warnings that are encountered to be promoted to errors. More...
|
| |
| bool | getWarningsAsErrors () const |
| | Returns if warning are promoted to errors. More...
|
| |
| void | setMaxErrors (const size_t maxErrors=0) |
| | Sets the maximum number of errors that are allowed before compilation should exit. More...
|
| |
| size_t | getMaxErrors () const |
| | Returns the number of allowed errors. More...
|
| |
| void | setNumberedOutput (const bool numbered=true) |
| | Error/warning formatting options. More...
|
| |
| void | setIndent (const size_t ident=0) |
| | Number of spaces to indent every new line before the message is formatted. More...
|
| |
| void | setErrorPrefix (const char *prefix="error: ") |
| | Set a prefix for each warning message. More...
|
| |
| void | setWarningPrefix (const char *prefix="warning: ") |
| | Set a prefix for each warning message. More...
|
| |
| void | setPrintLines (const bool print=true) |
| | Set whether the output should include the offending line of code. More...
|
| |
| bool | getNumberedOutput () const |
| | Returns whether the messages will be numbered. More...
|
| |
| size_t | getIndent () const |
| | Returns the number of spaces to be printed before every new line. More...
|
| |
| const char * | getErrorPrefix () const |
| | Returns the prefix for each error message. More...
|
| |
| const char * | getWarningPrefix () const |
| | Returns the prefix for each warning message. More...
|
| |
| bool | getPrintLines () const |
| | Returns whether the messages will include the line of offending code. More...
|
| |
| void | setSourceCode (const char *code) |
| | Set the source code that lines can be printed from if an error or warning is raised. More...
|
| |
| void | setSourceTree (openvdb::ax::ast::Tree::ConstPtr tree) |
| | Set the AST source tree which will be used as reference for the locations of nodes when resolving line and column numbers during AST traversal. More...
|
| |
| void | addNodeLocation (const ax::ast::Node *node, const CodeLocation &location) |
| | Add a node to the code location map. More...
|
| |
Logger for collecting errors and warnings that occur during AX compilation.
Error and warning output can be customised using the function pointer arguments. These require a function that takes the formatted error or warning string and handles the output, returning void. e.g. void streamCerr(const std::string& message) { std::cerr << message << std::endl; }
The Logger handles formatting of messages, tracking of number of errors or warnings and retrieval of errored lines of code to be printed if needed. Use of the Logger to track new errors or warnings can be done either with the line/column numbers directly (e.g during lexing and parsing where the code is being iterated through) or referring to the AST node using its position in the Tree (e.g. during codegen where only the AST node is known directly, not the corresponding line/column numbers). To find the line or column numbers for events logged using AST nodes, the Logger stores a map of Node* to line and column numbers. This must be populated e.g. during parsing, to allow resolution of code locations when they are not explicitly available. The Logger also stores a pointer to the AST Tree that these nodes belong to and the code used to create it.
- Warning
- The logger is not thread safe. A unique instance of the Logger should be used for unique invocations of ax pipelines.