-
Notifications
You must be signed in to change notification settings - Fork 0
/
LLVMInfoStreamBuilder.cpp
102 lines (75 loc) · 2.17 KB
/
LLVMInfoStreamBuilder.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// LLVMInfoStreamBuilder.cpp : Implementation of CLLVMInfoStreamBuilder
#include "pch.h"
#include "LLVMInfoStreamBuilder.h"
#include "Utilities.h"
// CLLVMInfoStreamBuilder
void CLLVMInfoStreamBuilder::construct(const std::shared_ptr<pdb::PDBFileBuilder>& thePDBFileBuilder)
{
pdbFileBuilder = thePDBFileBuilder;
infoStreamBuilder = pdbFileBuilder->getInfoBuilder();
}
STDMETHODIMP CLLVMInfoStreamBuilder::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* const arr[] =
{
&IID_ILLVMInfoStreamBuilder
};
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (InlineIsEqualGUID(*arr[i], riid))
return S_OK;
}
return S_FALSE;
}
STDMETHODIMP CLLVMInfoStreamBuilder::setVersion(LLVM_PdbRaw_ImplVer V)
{
infoStreamBuilder->setVersion(static_cast<pdb::PdbRaw_ImplVer>(V));
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::addFeature(LLVM_PdbRaw_FeatureSig Sig)
{
infoStreamBuilder->addFeature(static_cast<pdb::PdbRaw_FeatureSig>(Sig));
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::setHashPDBContentsToGUID(VARIANT_BOOL B)
{
infoStreamBuilder->setHashPDBContentsToGUID(B != VARIANT_FALSE);
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::setSignature(ULONG S)
{
infoStreamBuilder->setSignature(S);
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::setAge(ULONG A)
{
infoStreamBuilder->setAge(A);
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::setGuid(GUID G)
{
infoStreamBuilder->setGuid(*reinterpret_cast<llvm::codeview::GUID*>(&G));
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::getAge(ULONG* age)
{
infoStreamBuilder->getAge();
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::getGuid(GUID* guid)
{
*guid = *reinterpret_cast<GUID*>(&infoStreamBuilder->getGuid());
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::getSignature(VARIANT_BOOL* hasSignature, ULONG* signature)
{
*hasSignature = infoStreamBuilder->getSignature().hasValue();
if (*hasSignature)
*signature = infoStreamBuilder->getSignature().getValue();
return S_OK;
}
STDMETHODIMP CLLVMInfoStreamBuilder::finalizeMsfLayout()
{
return checkLLVMErrorAndSetCOMError(infoStreamBuilder->finalizeMsfLayout(),
GetObjectCLSID(), IID_ILLVMInfoStreamBuilder);
}