[llvm-pdbdump] Rewrite dumper using visitor pattern.
[oota-llvm.git] / lib / DebugInfo / PDB / PDBSymDumper.cpp
1 //===- PDBSymDumper.cpp - ---------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
11 #include "llvm/Support/ErrorHandling.h"
12
13 using namespace llvm;
14
15 #define PDB_SYMDUMP_UNREACHABLE(Type)                                          \
16   if (RequireImpl)                                                             \
17     llvm_unreachable("Attempt to dump " #Type " with no dump implementation");
18
19 PDBSymDumper::PDBSymDumper(bool ShouldRequireImpl)
20     : RequireImpl(ShouldRequireImpl) {}
21
22 PDBSymDumper::~PDBSymDumper() {}
23
24 void PDBSymDumper::dump(const PDBSymbolAnnotation &Symbol, raw_ostream &OS,
25                         int Indent) {
26   PDB_SYMDUMP_UNREACHABLE(PDBSymbolAnnotation)
27 }
28
29 void PDBSymDumper::dump(const PDBSymbolBlock &Symbol, raw_ostream &OS,
30                         int Indent) {
31   PDB_SYMDUMP_UNREACHABLE(PDBSymbolBlock)
32 }
33
34 void PDBSymDumper::dump(const PDBSymbolCompiland &Symbol, raw_ostream &OS,
35                         int Indent) {
36   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompiland)
37 }
38
39 void PDBSymDumper::dump(const PDBSymbolCompilandDetails &Symbol,
40                         raw_ostream &OS, int Indent) {
41   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandDetails)
42 }
43
44 void PDBSymDumper::dump(const PDBSymbolCompilandEnv &Symbol, raw_ostream &OS,
45                         int Indent) {
46   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandEnv)
47 }
48
49 void PDBSymDumper::dump(const PDBSymbolCustom &Symbol, raw_ostream &OS,
50                         int Indent) {
51   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCustom)
52 }
53
54 void PDBSymDumper::dump(const PDBSymbolData &Symbol, raw_ostream &OS,
55                         int Indent) {
56   PDB_SYMDUMP_UNREACHABLE(PDBSymbolData)
57 }
58
59 void PDBSymDumper::dump(const PDBSymbolExe &Symbol, raw_ostream &OS,
60                         int Indent) {
61   PDB_SYMDUMP_UNREACHABLE(PDBSymbolExe)
62 }
63
64 void PDBSymDumper::dump(const PDBSymbolFunc &Symbol, raw_ostream &OS,
65                         int Indent) {
66   PDB_SYMDUMP_UNREACHABLE(PDBSymbolFunc)
67 }
68
69 void PDBSymDumper::dump(const PDBSymbolFuncDebugEnd &Symbol, raw_ostream &OS,
70                         int Indent) {
71   PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugEnd)
72 }
73
74 void PDBSymDumper::dump(const PDBSymbolFuncDebugStart &Symbol, raw_ostream &OS,
75                         int Indent) {
76   PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugStart)
77 }
78
79 void PDBSymDumper::dump(const PDBSymbolLabel &Symbol, raw_ostream &OS,
80                         int Indent) {
81   PDB_SYMDUMP_UNREACHABLE(PDBSymbolLabel)
82 }
83
84 void PDBSymDumper::dump(const PDBSymbolPublicSymbol &Symbol, raw_ostream &OS,
85                         int Indent) {
86   PDB_SYMDUMP_UNREACHABLE(PDBSymbolPublicSymbol)
87 }
88
89 void PDBSymDumper::dump(const PDBSymbolThunk &Symbol, raw_ostream &OS,
90                         int Indent) {
91   PDB_SYMDUMP_UNREACHABLE(PDBSymbolThunk)
92 }
93
94 void PDBSymDumper::dump(const PDBSymbolTypeArray &Symbol, raw_ostream &OS,
95                         int Indent) {
96   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeArray)
97 }
98
99 void PDBSymDumper::dump(const PDBSymbolTypeBaseClass &Symbol, raw_ostream &OS,
100                         int Indent) {
101   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBaseClass)
102 }
103
104 void PDBSymDumper::dump(const PDBSymbolTypeBuiltin &Symbol, raw_ostream &OS,
105                         int Indent) {
106   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBuiltin)
107 }
108
109 void PDBSymDumper::dump(const PDBSymbolTypeCustom &Symbol, raw_ostream &OS,
110                         int Indent) {
111   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeCustom)
112 }
113
114 void PDBSymDumper::dump(const PDBSymbolTypeDimension &Symbol, raw_ostream &OS,
115                         int Indent) {
116   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeDimension)
117 }
118
119 void PDBSymDumper::dump(const PDBSymbolTypeEnum &Symbol, raw_ostream &OS,
120                         int Indent) {
121   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeEnum)
122 }
123
124 void PDBSymDumper::dump(const PDBSymbolTypeFriend &Symbol, raw_ostream &OS,
125                         int Indent) {
126   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFriend)
127 }
128
129 void PDBSymDumper::dump(const PDBSymbolTypeFunctionArg &Symbol, raw_ostream &OS,
130                         int Indent) {
131   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionArg)
132 }
133
134 void PDBSymDumper::dump(const PDBSymbolTypeFunctionSig &Symbol, raw_ostream &OS,
135                         int Indent) {
136   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionSig)
137 }
138
139 void PDBSymDumper::dump(const PDBSymbolTypeManaged &Symbol, raw_ostream &OS,
140                         int Indent) {
141   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeManaged)
142 }
143
144 void PDBSymDumper::dump(const PDBSymbolTypePointer &Symbol, raw_ostream &OS,
145                         int Indent) {
146   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypePointer)
147 }
148
149 void PDBSymDumper::dump(const PDBSymbolTypeTypedef &Symbol, raw_ostream &OS,
150                         int Indent) {
151   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeTypedef)
152 }
153
154 void PDBSymDumper::dump(const PDBSymbolTypeUDT &Symbol, raw_ostream &OS,
155                         int Indent) {
156   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeUDT)
157 }
158
159 void PDBSymDumper::dump(const PDBSymbolTypeVTable &Symbol, raw_ostream &OS,
160                         int Indent) {
161   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTable)
162 }
163
164 void PDBSymDumper::dump(const PDBSymbolTypeVTableShape &Symbol, raw_ostream &OS,
165                         int Indent) {
166   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTableShape)
167 }
168
169 void PDBSymDumper::dump(const PDBSymbolUnknown &Symbol, raw_ostream &OS,
170                         int Indent) {
171   PDB_SYMDUMP_UNREACHABLE(PDBSymbolUnknown)
172 }
173
174 void PDBSymDumper::dump(const PDBSymbolUsingNamespace &Symbol, raw_ostream &OS,
175                         int Indent) {
176   PDB_SYMDUMP_UNREACHABLE(PDBSymbolUsingNamespace)
177 }