Porytiles
Loading...
Searching...
No Matches
stderr_styled_user_diagnostics.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <string>
5#include <vector>
6
7#include "gsl/pointers"
8
12
13namespace porytiles {
14
32 public:
37 explicit StderrStyledUserDiagnostics(const gsl::not_null<TextFormatter *> format, const std::size_t wrap_width = 0)
38 : UserDiagnostics{format}, wrap_width_{wrap_width}
39 {
40 }
41
50 void remark(const std::string &tag, const std::vector<std::string> &lines) const override;
51
60 void warning(const std::string &tag, const std::vector<std::string> &lines) const override;
61
70 void error(const std::string &tag, const std::vector<std::string> &lines) const override;
71
79 void emit_fatal_proximate(const Error &err) const override;
80
89 void emit_fatal_step(const Error &err) const override;
90
99 void emit_fatal_root(const Error &err) const override;
100
110 void remark_note(const std::string &tag, const std::vector<std::string> &lines) const override;
111
121 void warning_note(const std::string &tag, const std::vector<std::string> &lines) const override;
122
132 void error_note(const std::string &tag, const std::vector<std::string> &lines) const override;
133
134 private:
135 void emit_note_impl(const std::string &tag, const std::vector<std::string> &lines) const;
136
138 std::size_t wrap_width_;
139};
140
141} // namespace porytiles
Abstract interface for all error types used in ChainableResult error chains.
Definition error.hpp:17
Concrete implementation of UserDiagnostics that outputs structured messages to stderr,...
void warning_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged note associated with a warning to stderr.
void emit_fatal_proximate(const Error &err) const override
Emit the proximate (immediate) error in a fatal error chain to stderr.
void remark(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged informational remark to stderr.
void remark_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged note associated with a remark to stderr.
StderrStyledUserDiagnostics(const gsl::not_null< TextFormatter * > format, const std::size_t wrap_width=0)
Constructs the printer, optionally enabling auto-wrap at wrap_width columns.
void emit_fatal_root(const Error &err) const override
Emit the root cause error in a fatal error chain to stderr.
void emit_fatal_step(const Error &err) const override
Emit an intermediate step error in a fatal error chain to stderr.
void error_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged note associated with an error to stderr.
Abstract class for structured error reporting and diagnostic output.
@ warning
Emit a warning and continue decompilation.
@ error
Emit a formatted error and fail decompilation.