LLVM: include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h Source File (original) (raw)
Go to the documentation of this file.
1
2
3
4
5
6
7
8
9#ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H
10#define LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H
11
15#include
16
17namespace llvm {
19
21public:
23
25 for (auto *Visitor : Pipeline) {
26 if (auto EC = Visitor->visitUnknownSymbol(Record))
27 return EC;
28 }
30 }
31
33 for (auto *Visitor : Pipeline) {
34 if (auto EC = Visitor->visitSymbolBegin(Record, Offset))
35 return EC;
36 }
38 }
39
41 for (auto *Visitor : Pipeline) {
42 if (auto EC = Visitor->visitSymbolBegin(Record))
43 return EC;
44 }
46 }
47
49 for (auto *Visitor : Pipeline) {
50 if (auto EC = Visitor->visitSymbolEnd(Record))
51 return EC;
52 }
54 }
55
57 Pipeline.push_back(&Callbacks);
58 }
59
60#define SYMBOL_RECORD(EnumName, EnumVal, Name) \
61 Error visitKnownRecord(CVSymbol &CVR, Name &Record) override { \
62 for (auto Visitor : Pipeline) { \
63 if (auto EC = Visitor->visitKnownRecord(CVR, Record)) \
64 return EC; \
65 } \
66 return Error::success(); \
67 }
68#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
69#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
70
71private:
72 std::vector<SymbolVisitorCallbacks *> Pipeline;
73};
74
75}
76}
77
78#endif
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Error visitUnknownSymbol(CVSymbol &Record) override
Action to take on unknown symbols. By default, they are ignored.
Definition SymbolVisitorCallbackPipeline.h:24
Error visitSymbolBegin(CVSymbol &Record, uint32_t Offset) override
Paired begin/end actions for all symbols.
Definition SymbolVisitorCallbackPipeline.h:32
void addCallbackToPipeline(SymbolVisitorCallbacks &Callbacks)
Definition SymbolVisitorCallbackPipeline.h:56
Error visitSymbolBegin(CVSymbol &Record) override
Definition SymbolVisitorCallbackPipeline.h:40
SymbolVisitorCallbackPipeline()=default
Error visitSymbolEnd(CVSymbol &Record) override
Definition SymbolVisitorCallbackPipeline.h:48
CVRecord< SymbolKind > CVSymbol
This is an optimization pass for GlobalISel generic memory operations.