10 #ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H
11 #define LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H
26 for (
auto Visitor : Pipeline) {
27 if (
auto EC = Visitor->visitUnknownSymbol(Record))
34 for (
auto Visitor : Pipeline) {
35 if (
auto EC = Visitor->visitSymbolBegin(Record))
42 for (
auto Visitor : Pipeline) {
43 if (
auto EC = Visitor->visitSymbolEnd(Record))
50 Pipeline.push_back(&Callbacks);
53 #define SYMBOL_RECORD(EnumName, EnumVal, Name) \
54 Error visitKnownRecord(CVSymbol &CVR, Name &Record) override { \
55 for (auto Visitor : Pipeline) { \
56 if (auto EC = Visitor->visitKnownRecord(CVR, Record)) \
59 return Error::success(); \
61 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
62 #include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"
65 std::vector<SymbolVisitorCallbacks *> Pipeline;
71 #endif // LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H
SymbolVisitorCallbackPipeline()=default
Error visitUnknownSymbol(CVSymbol &Record) override
Action to take on unknown symbols. By default, they are ignored.
void addCallbackToPipeline(SymbolVisitorCallbacks &Callbacks)
static ErrorSuccess success()
Create a success value.
Error visitSymbolEnd(CVSymbol &Record) override
Error visitSymbolBegin(CVSymbol &Record) override
Paired begin/end actions for all symbols.
Lightweight error class with error context and mandatory checking.