Porytiles
Loading...
Searching...
No Matches
stderr_styled_user_diagnostics.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <vector>
5
6#include "gsl/pointers"
7
11
12namespace porytiles2 {
13
14/*
15 * TODO: change this class to ConfigurableUserDiagnostics. We should expose for configuration:
16 * 1. Where the diagnostics go: stderr, stdout, a file?
17 * 2. Colors on or off
18 * 3. Diagnostic tag include and exclude filters
19 * 4. Diagnostic tag settable limits: stop showing diagnostics with a given tag when a limit is hit
20 */
21
39 public:
40 explicit StderrStyledUserDiagnostics(const gsl::not_null<TextFormatter *> format) : format_{format} {}
41
52 void note(const std::string &tag, const std::vector<std::string> &lines) const override;
53
64 void warn_note(const std::string &tag, const std::vector<std::string> &lines) const override;
65
76 void warn(const std::string &tag, const std::vector<std::string> &lines) const override;
77
88 void err(const std::string &tag, const std::vector<std::string> &lines) const override;
89
99 void emit_fatal_proximate(const Error &err) const override;
100
111 void emit_fatal_step(const Error &err) const override;
112
123 void emit_fatal_root(const Error &err) const override;
124
125 private:
126 TextFormatter *format_;
127};
128
129} // namespace porytiles2
Abstract interface for all error types used in ChainableResult error chains.
Definition error.hpp:26
Concrete implementation of UserDiagnostics that outputs structured messages to stderr,...
void emit_fatal_step(const Error &err) const override
Emit an intermediate step error in a fatal error chain to stderr.
void warn_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged warning note to stderr.
void emit_fatal_root(const Error &err) const override
Emit the root cause error in a fatal error chain to stderr.
void warn(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged 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 note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged informational note to stderr.
StderrStyledUserDiagnostics(const gsl::not_null< TextFormatter * > format)
void err(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged error message to stderr.
Abstract base class for applying text styling with context-aware formatting.
Abstract interface for structured error reporting and diagnostic output.