blob: 1d6c90198df2859eb7cd4b60a51cf440e5e39418 [file] [log] [blame]
Zachary Turner0e9e6632015-02-06 20:30:52 +00001//===- PDBInterfaceAnchors.h - defines class anchor funcions ----*- 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// Class anchors are necessary per the LLVM Coding style guide, to ensure that
10// the vtable is only generated in this object file, and not in every object
11// file that incldues the corresponding header.
12//===----------------------------------------------------------------------===//
13
14#include "llvm/DebugInfo/PDB/IPDBDataStream.h"
15#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"
16#include "llvm/DebugInfo/PDB/IPDBSession.h"
17#include "llvm/DebugInfo/PDB/IPDBSourceFile.h"
18#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
19
20#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"
21#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"
22#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"
23#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"
24#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"
25#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"
26#include "llvm/DebugInfo/PDB/PDBSymbolData.h"
27#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
28#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
29#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"
30#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"
31#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"
32#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"
33#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"
34#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"
35#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"
36#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
37#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"
38#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"
39#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"
40#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"
41#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"
42#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"
43#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"
44#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
45#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"
46#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
47#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"
48#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"
49#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"
50#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"
51
52using namespace llvm;
53
54IPDBSession::~IPDBSession() {}
55
56IPDBDataStream::~IPDBDataStream() {}
57
58IPDBRawSymbol::~IPDBRawSymbol() {}
59
60IPDBSourceFile::~IPDBSourceFile() {}
61
62IPDBLineNumber::~IPDBLineNumber() {}
63
64// All of the concrete symbol types have their methods declared inline through
65// the use of a forwarding macro, so the constructor should be declared out of
66// line to get the vtable in this file.
67#define FORWARD_SYMBOL_CONSTRUCTOR(ClassName) \
68 ClassName::ClassName(std::unique_ptr<IPDBRawSymbol> Symbol) \
69 : PDBSymbol(std::move(Symbol)) {}
70
71FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolAnnotation)
72FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolBlock)
73FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompiland)
74FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandDetails)
75FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandEnv)
76FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCustom)
77FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolData)
78FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolExe)
79FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFunc)
80FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugEnd)
81FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugStart)
82FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolLabel)
83FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolPublicSymbol)
84FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolThunk)
85FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeArray)
86FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBaseClass)
87FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBuiltin)
88FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeCustom)
89FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeDimension)
90FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeEnum)
91FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFriend)
92FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionArg)
93FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionSig)
94FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeManaged)
95FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypePointer)
96FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeTypedef)
97FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeUDT)
98FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTable)
99FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTableShape)
100FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUnknown)
101FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUsingNamespace)