|
|
Donner
Embeddable browser-grade SVG2 engine
|
Collects parse warnings during parsing. More...
#include "donner/base/ParseWarningSink.h"
Public Member Functions | |
| ParseWarningSink ()=default | |
| Construct a sink that collects warnings. | |
| bool | isEnabled () const |
| Returns true if the sink is enabled (will store warnings). | |
| template<typename Factory> requires std::invocable<Factory> && std::same_as<std::invoke_result_t<Factory>, ParseDiagnostic> | |
| void | add (Factory &&factory) |
| Add a warning via a factory callable. | |
| void | add (ParseDiagnostic &&warning) |
| Add a pre-constructed warning (for cases where the diagnostic is already built). | |
| const std::vector< ParseDiagnostic > & | warnings () const |
| Access the collected warnings. | |
| bool | hasWarnings () const |
| Returns true if any warnings have been added. | |
| void | merge (ParseWarningSink &&other) |
| Merge all warnings from another sink into this one. | |
| void | mergeFromSubparser (ParseWarningSink &&other, FileOffset parentOffset) |
| Merge warnings from a subparser, remapping source ranges using the given parent offset. | |
Static Public Member Functions | |
| static ParseWarningSink | Disabled () |
| Construct a disabled sink that discards all warnings (no-op). | |
Collects parse warnings during parsing.
Always safe to call add() on—when disabled, warnings are silently dropped without invoking the factory callable, implicitly avoiding string formatting overhead.
Replaces the std::vector<ParseDiagnostic>* outWarnings pattern.
Usage:
|
inline |
Add a warning via a factory callable.
The callable is only invoked when the sink is enabled, implicitly avoiding formatting overhead when warnings are disabled.
| Factory | A callable returning ParseDiagnostic. |
|
inline |
Merge warnings from a subparser, remapping source ranges using the given parent offset.
Each warning's range.start and range.end are remapped via addParentOffset(parentOffset), translating them from the subparser's local coordinate space to the parent's.
| other | Subparser's warning sink to merge from. |
| parentOffset | The offset of the subparser's input within the parent input. |