1ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//===- DIARawSymbol.cpp - DIA implementation of IPDBRawSymbol ---*- C++ -*-===//
2ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
3ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//                     The LLVM Compiler Infrastructure
4ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
5ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines// This file is distributed under the University of Illinois Open Source
6ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines// License. See LICENSE.TXT for details.
7ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
8ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//===----------------------------------------------------------------------===//
9ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
10ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/ADT/STLExtras.h"
11ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h"
12ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/DebugInfo/PDB/DIA/DIARawSymbol.h"
13ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/DebugInfo/PDB/DIA/DIASession.h"
14ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/DebugInfo/PDB/PDBExtras.h"
15ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/Support/ConvertUTF.h"
16ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/Support/raw_ostream.h"
17ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
18ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesusing namespace llvm;
19ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
20ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesnamespace {
21ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesVariant VariantFromVARIANT(const VARIANT &V) {
22ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Variant Result;
23ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  switch (V.vt) {
24ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_I1:
25ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Int8 = V.cVal;
26ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Int8;
27ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
28ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_I2:
29ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Int16 = V.iVal;
30ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Int16;
31ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
32ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_I4:
33ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Int32 = V.intVal;
34ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Int32;
35ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
36ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_I8:
37ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Int64 = V.llVal;
38ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Int64;
39ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
40ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_UI1:
41ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.UInt8 = V.bVal;
42ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::UInt8;
43ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
44ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_UI2:
45ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.UInt16 = V.uiVal;
46ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::UInt16;
47ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
48ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_UI4:
49ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.UInt32 = V.uintVal;
50ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::UInt32;
51ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
52ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_UI8:
53ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.UInt64 = V.ullVal;
54ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::UInt64;
55ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
56ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_BOOL:
57ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Bool = (V.boolVal == VARIANT_TRUE) ? true : false;
58ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Bool;
59ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
60ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_R4:
61ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Single = V.fltVal;
62ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Single;
63ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
64ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  case VT_R8:
65ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Double = V.dblVal;
66ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Double;
67ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
68ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  default:
69ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    Result.Type = PDB_VariantType::Unknown;
70ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    break;
71ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
72ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return Result;
73ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
74ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
75ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinestemplate <typename ArgType>
76ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesArgType PrivateGetDIAValue(IDiaSymbol *Symbol,
77ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                           HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
78ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  ArgType Value;
79ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK == (Symbol->*Method)(&Value))
80ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return static_cast<ArgType>(Value);
81ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
82ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return ArgType();
83ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
84ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
85ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinestemplate <typename ArgType, typename RetType>
86ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesRetType PrivateGetDIAValue(IDiaSymbol *Symbol,
87ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                           HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
88ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  ArgType Value;
89ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK == (Symbol->*Method)(&Value))
90ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return static_cast<RetType>(Value);
91ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
92ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return RetType();
93ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
94ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
95ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string
96ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPrivateGetDIAValue(IDiaSymbol *Symbol,
97ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                   HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
98ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  CComBSTR Result16;
99ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != (Symbol->*Method)(&Result16))
100ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return std::string();
101ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
102ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  const char *SrcBytes = reinterpret_cast<const char *>(Result16.m_str);
103ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  llvm::ArrayRef<char> SrcByteArray(SrcBytes, Result16.ByteLength());
104ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  std::string Result8;
105ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (!llvm::convertUTF16ToUTF8String(SrcByteArray, Result8))
106ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return std::string();
107ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return Result8;
108ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
109ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
110ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_UniqueId
111ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPrivateGetDIAValue(IDiaSymbol *Symbol,
112ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                   HRESULT (__stdcall IDiaSymbol::*Method)(GUID *)) {
113ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  GUID Result;
114ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != (Symbol->*Method)(&Result))
115ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return PDB_UniqueId();
116ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
117ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  static_assert(sizeof(PDB_UniqueId) == sizeof(GUID),
118ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                "PDB_UniqueId is the wrong size!");
119ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  PDB_UniqueId IdResult;
120ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  ::memcpy(&IdResult, &Result, sizeof(GUID));
121ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return IdResult;
122ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
123ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
124ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinestemplate <typename ArgType>
125ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,
126ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                  IDiaSymbol *Symbol,
127ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                  HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
128ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  ArgType Value;
129ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK == (Symbol->*Method)(&Value)) {
130ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    OS << "\n";
131ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    OS.indent(Indent);
132ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    OS << Name << ": " << Value;
133ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
134ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
135ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
136ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,
137ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                  IDiaSymbol *Symbol,
138ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                  HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
139ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  BSTR Value = nullptr;
140ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != (Symbol->*Method)(&Value))
141ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return;
142ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  const char *Bytes = reinterpret_cast<const char *>(Value);
143ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  ArrayRef<char> ByteArray(Bytes, ::SysStringByteLen(Value));
144ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  std::string Result;
145ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (llvm::convertUTF16ToUTF8String(ByteArray, Result)) {
146ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    OS << "\n";
147ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    OS.indent(Indent);
148ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    OS << Name << ": " << Result;
149ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
150ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  ::SysFreeString(Value);
151ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
152ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
153ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,
154ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                  IDiaSymbol *Symbol,
155ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                  HRESULT (__stdcall IDiaSymbol::*Method)(VARIANT *)) {
156ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  VARIANT Value;
157ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Value.vt = VT_EMPTY;
158ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != (Symbol->*Method)(&Value))
159ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return;
160ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  OS << "\n";
161ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  OS.indent(Indent);
162ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Variant V = VariantFromVARIANT(Value);
163ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  OS << V;
164ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
165ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
166ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
167ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesnamespace llvm {
168ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesraw_ostream &operator<<(raw_ostream &OS, const GUID &Guid) {
169ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  const PDB_UniqueId *Id = reinterpret_cast<const PDB_UniqueId *>(&Guid);
170ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  OS << *Id;
171ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return OS;
172ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
173ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
174ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
175ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesDIARawSymbol::DIARawSymbol(const DIASession &PDBSession,
176ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                           CComPtr<IDiaSymbol> DiaSymbol)
177ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    : Session(PDBSession), Symbol(DiaSymbol) {}
178ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
179ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#define RAW_METHOD_DUMP(Stream, Method)                                        \
180ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  DumpDIAValue(Stream, Indent, StringRef(#Method), Symbol, &IDiaSymbol::Method);
181ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
182ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DIARawSymbol::dump(raw_ostream &OS, int Indent) const {
183ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_access)
184ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_addressOffset)
185ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_addressSection)
186ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_age)
187ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_arrayIndexTypeId)
188ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_backEndMajor)
189ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_backEndMinor)
190ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_backEndBuild)
191ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_backEndQFE)
192ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_baseDataOffset)
193ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_baseDataSlot)
194ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_baseSymbolId)
195ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_baseType)
196ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_bitPosition)
197ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_callingConvention)
198ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_classParentId)
199ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_compilerName)
200ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_count)
201ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_countLiveRanges)
202ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_frontEndMajor)
203ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_frontEndMinor)
204ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_frontEndBuild)
205ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_frontEndQFE)
206ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_lexicalParentId)
207ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_libraryName)
208ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_liveRangeStartAddressOffset)
209ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_liveRangeStartAddressSection)
210ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_liveRangeStartRelativeVirtualAddress)
211ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_localBasePointerRegisterId)
212ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_lowerBoundId)
213ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_memorySpaceKind)
214ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_name)
215ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_numberOfAcceleratorPointerTags)
216ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_numberOfColumns)
217ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_numberOfModifiers)
218ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_numberOfRegisterIndices)
219ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_numberOfRows)
220ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_objectFileName)
221ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_oemId)
222ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_oemSymbolId)
223ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_offsetInUdt)
224ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_platform)
225ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_rank)
226ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_registerId)
227ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_registerType)
228ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_relativeVirtualAddress)
229ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_samplerSlot)
230ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_signature)
231ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_sizeInUdt)
232ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_slot)
233ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_sourceFileName)
234ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_stride)
235ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_subTypeId)
236ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_symbolsFileName)
237ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_symIndexId)
238ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_targetOffset)
239ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_targetRelativeVirtualAddress)
240ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_targetVirtualAddress)
241ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_targetSection)
242ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_textureSlot)
243ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_timeStamp)
244ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_token)
245ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_typeId)
246ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_uavSlot)
247ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_undecoratedName)
248ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_unmodifiedTypeId)
249ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_upperBoundId)
250ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtualBaseDispIndex)
251ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtualBaseOffset)
252ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtualTableShapeId)
253ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_dataKind)
254ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_symTag)
255ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_guid)
256ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_offset)
257ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_thisAdjust)
258ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtualBasePointerOffset)
259ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_locationType)
260ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_machineType)
261ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_thunkOrdinal)
262ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_length)
263ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_liveRangeLength)
264ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtualAddress)
265ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_udtKind)
266ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_constructor)
267ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_customCallingConvention)
268ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_farReturn)
269ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_code)
270ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_compilerGenerated)
271ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_constType)
272ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_editAndContinueEnabled)
273ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_function)
274ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_stride)
275ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_noStackOrdering)
276ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasAlloca)
277ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasAssignmentOperator)
278ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isCTypes)
279ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasCastOperator)
280ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasDebugInfo)
281ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasEH)
282ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasEHa)
283ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasInlAsm)
284ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_framePointerPresent)
285ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_inlSpec)
286ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_interruptReturn)
287ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasLongJump)
288ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasManagedCode)
289ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasNestedTypes)
290ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_noInline)
291ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_noReturn)
292ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_optimizedCodeDebugInfo)
293ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_overloadedOperator)
294ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasSEH)
295ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasSecurityChecks)
296ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_hasSetJump)
297ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_strictGSCheck)
298ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isAcceleratorGroupSharedLocal)
299ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isAcceleratorPointerTagLiveRange)
300ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isAcceleratorStubFunction)
301ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isAggregated)
302ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_intro)
303ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isCVTCIL)
304ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isConstructorVirtualBase)
305ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isCxxReturnUdt)
306ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isDataAligned)
307ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isHLSLData)
308ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isHotpatchable)
309ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_indirectVirtualBaseClass)
310ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isInterfaceUdt)
311ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_intrinsic)
312ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isLTCG)
313ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isLocationControlFlowDependent)
314ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isMSILNetmodule)
315ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isMatrixRowMajor)
316ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_managed)
317ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_msil)
318ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isMultipleInheritance)
319ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isNaked)
320ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_nested)
321ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isOptimizedAway)
322ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_packed)
323ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isPointerBasedOnSymbolValue)
324ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isPointerToDataMember)
325ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isPointerToMemberFunction)
326ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_pure)
327ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_RValueReference)
328ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isRefUdt)
329ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_reference)
330ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_restrictedType)
331ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isReturnValue)
332ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isSafeBuffers)
333ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_scoped)
334ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isSdl)
335ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isSingleInheritance)
336ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isSplitted)
337ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isStatic)
338ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isStripped)
339ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_unalignedType)
340ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_notReached)
341ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isValueUdt)
342ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtual)
343ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_virtualBaseClass)
344ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_isVirtualInheritance)
345ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_volatileType)
346ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_wasInlined)
347ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_unused)
348ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  RAW_METHOD_DUMP(OS, get_value)
349ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
350ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
351ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::unique_ptr<IPDBEnumSymbols>
352ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesDIARawSymbol::findChildren(PDB_SymType Type) const {
353ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
354ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
355ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  CComPtr<IDiaEnumSymbols> DiaEnumerator;
356ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != Symbol->findChildrenEx(EnumVal, nullptr, nsNone, &DiaEnumerator))
357ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return nullptr;
358ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
359ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
360ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
361ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
362ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::unique_ptr<IPDBEnumSymbols>
363ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesDIARawSymbol::findChildren(PDB_SymType Type, StringRef Name,
364ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                           PDB_NameSearchFlags Flags) const {
365ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  llvm::SmallVector<UTF16, 32> Name16;
366ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  llvm::convertUTF8ToUTF16String(Name, Name16);
367ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
368ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
369ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  DWORD CompareFlags = static_cast<DWORD>(Flags);
370ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
371ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
372ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  CComPtr<IDiaEnumSymbols> DiaEnumerator;
373ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK !=
374ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines      Symbol->findChildrenEx(EnumVal, Name16Str, CompareFlags, &DiaEnumerator))
375ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return nullptr;
376ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
377ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
378ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
379ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
380ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::unique_ptr<IPDBEnumSymbols>
381ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesDIARawSymbol::findChildrenByRVA(PDB_SymType Type, StringRef Name,
382ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                PDB_NameSearchFlags Flags, uint32_t RVA) const {
383ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  llvm::SmallVector<UTF16, 32> Name16;
384ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  llvm::convertUTF8ToUTF16String(Name, Name16);
385ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
386ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
387ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  DWORD CompareFlags = static_cast<DWORD>(Flags);
388ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
389ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
390ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  CComPtr<IDiaEnumSymbols> DiaEnumerator;
391ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK !=
392ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines      Symbol->findChildrenExByRVA(EnumVal, Name16Str, CompareFlags, RVA,
393ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                  &DiaEnumerator))
394ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return nullptr;
395ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
396ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
397ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
398ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
399ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::unique_ptr<IPDBEnumSymbols>
400ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesDIARawSymbol::findInlineFramesByRVA(uint32_t RVA) const {
401ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  CComPtr<IDiaEnumSymbols> DiaEnumerator;
402ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != Symbol->findInlineFramesByRVA(RVA, &DiaEnumerator))
403ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return nullptr;
404ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
405ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
406ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
407ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
408ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DIARawSymbol::getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const {
409ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  bytes.clear();
410ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
411ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  DWORD DataSize = 0;
412ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Symbol->get_dataBytes(0, &DataSize, nullptr);
413ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (DataSize == 0)
414ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return;
415ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
416ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  bytes.resize(DataSize);
417ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Symbol->get_dataBytes(DataSize, &DataSize, bytes.data());
418ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
419ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
420ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_MemberAccess DIARawSymbol::getAccess() const {
421ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_MemberAccess>(Symbol,
422ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                     &IDiaSymbol::get_access);
423ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
424ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
425ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getAddressOffset() const {
426ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressOffset);
427ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
428ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
429ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getAddressSection() const {
430ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressSection);
431ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
432ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
433ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getAge() const {
434ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_age);
435ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
436ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
437ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getArrayIndexTypeId() const {
438ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_arrayIndexTypeId);
439ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
440ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
441ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DIARawSymbol::getBackEndVersion(VersionInfo &Version) const {
442ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.Major = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndMajor);
443ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.Minor = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndMinor);
444ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.Build = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndBuild);
445ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.QFE = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndQFE);
446ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
447ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
448ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getBaseDataOffset() const {
449ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataOffset);
450ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
451ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
452ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getBaseDataSlot() const {
453ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataSlot);
454ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
455ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
456ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getBaseSymbolId() const {
457ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseSymbolId);
458ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
459ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
460ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_BuiltinType DIARawSymbol::getBuiltinType() const {
461ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_BuiltinType>(Symbol,
462ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                    &IDiaSymbol::get_baseType);
463ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
464ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
465ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getBitPosition() const {
466ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_bitPosition);
467ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
468ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
469ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_CallingConv DIARawSymbol::getCallingConvention() const {
470ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_CallingConv>(
471ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines      Symbol, &IDiaSymbol::get_callingConvention);
472ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
473ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
474ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getClassParentId() const {
475ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_classParentId);
476ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
477ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
478ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getCompilerName() const {
479ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerName);
480ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
481ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
482ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getCount() const {
483ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_count);
484ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
485ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
486ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getCountLiveRanges() const {
487ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_countLiveRanges);
488ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
489ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
490ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid DIARawSymbol::getFrontEndVersion(VersionInfo &Version) const {
491ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.Major = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndMajor);
492ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.Minor = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndMinor);
493ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.Build = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndBuild);
494ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Version.QFE = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndQFE);
495ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
496ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
497ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_Lang DIARawSymbol::getLanguage() const {
498ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_Lang>(Symbol, &IDiaSymbol::get_language);
499ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
500ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
501ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getLexicalParentId() const {
502ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lexicalParentId);
503ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
504ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
505ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getLibraryName() const {
506ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_libraryName);
507ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
508ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
509ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getLiveRangeStartAddressOffset() const {
510ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
511ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_liveRangeStartAddressOffset);
512ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
513ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
514ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getLiveRangeStartAddressSection() const {
515ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
516ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_liveRangeStartAddressSection);
517ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
518ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
519ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getLiveRangeStartRelativeVirtualAddress() const {
520ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(
521ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines      Symbol, &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);
522ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
523ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
524ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_RegisterId DIARawSymbol::getLocalBasePointerRegisterId() const {
525ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_RegisterId>(
526ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines      Symbol, &IDiaSymbol::get_localBasePointerRegisterId);
527ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
528ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
529ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getLowerBoundId() const {
530ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lowerBoundId);
531ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
532ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
533ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getMemorySpaceKind() const {
534ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_memorySpaceKind);
535ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
536ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
537ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getName() const {
538ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_name);
539ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
540ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
541ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getNumberOfAcceleratorPointerTags() const {
542ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
543ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_numberOfAcceleratorPointerTags);
544ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
545ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
546ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getNumberOfColumns() const {
547ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfColumns);
548ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
549ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
550ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getNumberOfModifiers() const {
551ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfModifiers);
552ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
553ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
554ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getNumberOfRegisterIndices() const {
555ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRegisterIndices);
556ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
557ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
558ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getNumberOfRows() const {
559ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRows);
560ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
561ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
562ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getObjectFileName() const {
563ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_objectFileName);
564ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
565ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
566ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getOemId() const {
567ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemId);
568ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
569ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
570ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getOemSymbolId() const {
571ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemSymbolId);
572ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
573ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
574ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getOffsetInUdt() const {
575ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offsetInUdt);
576ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
577ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
578ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_Cpu DIARawSymbol::getPlatform() const {
579ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_Cpu>(Symbol, &IDiaSymbol::get_platform);
580ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
581ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
582ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getRank() const {
583ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_rank);
584ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
585ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
586ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_RegisterId DIARawSymbol::getRegisterId() const {
587ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_RegisterId>(Symbol,
588ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                   &IDiaSymbol::get_registerId);
589ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
590ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
591ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getRegisterType() const {
592ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_registerType);
593ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
594ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
595ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getRelativeVirtualAddress() const {
596ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_relativeVirtualAddress);
597ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
598ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
599ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getSamplerSlot() const {
600ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_samplerSlot);
601ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
602ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
603ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getSignature() const {
604ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_signature);
605ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
606ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
607ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getSizeInUdt() const {
608ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sizeInUdt);
609ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
610ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
611ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getSlot() const {
612ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_slot);
613ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
614ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
615ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getSourceFileName() const {
616ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sourceFileName);
617ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
618ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
619ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getStride() const {
620ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_stride);
621ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
622ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
623ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getSubTypeId() const {
624ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_subTypeId);
625ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
626ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
627ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getSymbolsFileName() const {
628ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symbolsFileName);
629ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
630ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
631ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getSymIndexId() const {
632ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symIndexId);
633ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
634ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
635ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getTargetOffset() const {
636ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetOffset);
637ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
638ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
639ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getTargetRelativeVirtualAddress() const {
640ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
641ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_targetRelativeVirtualAddress);
642ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
643ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
644ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint64_t DIARawSymbol::getTargetVirtualAddress() const {
645ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetVirtualAddress);
646ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
647ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
648ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getTargetSection() const {
649ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetSection);
650ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
651ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
652ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getTextureSlot() const {
653ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_textureSlot);
654ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
655ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
656ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getTimeStamp() const {
657ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_timeStamp);
658ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
659ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
660ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getToken() const {
661ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_token);
662ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
663ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
664ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getTypeId() const {
665ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_typeId);
666ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
667ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
668ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getUavSlot() const {
669ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_uavSlot);
670ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
671ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
672ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getUndecoratedName() const {
673ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_undecoratedName);
674ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
675ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
676ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getUnmodifiedTypeId() const {
677ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unmodifiedTypeId);
678ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
679ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
680ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getUpperBoundId() const {
681ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_upperBoundId);
682ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
683ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
684ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesVariant DIARawSymbol::getValue() const {
685ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  VARIANT Value;
686ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  Value.vt = VT_EMPTY;
687ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  if (S_OK != Symbol->get_value(&Value))
688ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    return Variant();
689ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
690ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return VariantFromVARIANT(Value);
691ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
692ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
693ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getVirtualBaseDispIndex() const {
694ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseDispIndex);
695ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
696ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
697ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getVirtualBaseOffset() const {
698ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseOffset);
699ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
700ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
701ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint32_t DIARawSymbol::getVirtualTableShapeId() const {
702ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualTableShapeId);
703ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
704ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
705ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_DataKind DIARawSymbol::getDataKind() const {
706ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_DataKind>(Symbol,
707ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                 &IDiaSymbol::get_dataKind);
708ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
709ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
710ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_SymType DIARawSymbol::getSymTag() const {
711ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_SymType>(Symbol,
712ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                &IDiaSymbol::get_symTag);
713ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
714ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
715ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_UniqueId DIARawSymbol::getGuid() const {
716ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_guid);
717ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
718ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
719ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesint32_t DIARawSymbol::getOffset() const {
720ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offset);
721ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
722ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
723ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesint32_t DIARawSymbol::getThisAdjust() const {
724ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_thisAdjust);
725ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
726ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
727ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesint32_t DIARawSymbol::getVirtualBasePointerOffset() const {
728ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBasePointerOffset);
729ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
730ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
731ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_LocType DIARawSymbol::getLocationType() const {
732ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_LocType>(Symbol,
733ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                &IDiaSymbol::get_locationType);
734ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
735ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
736ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_Machine DIARawSymbol::getMachineType() const {
737ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_Machine>(Symbol,
738ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                &IDiaSymbol::get_machineType);
739ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
740ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
741ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_ThunkOrdinal DIARawSymbol::getThunkOrdinal() const {
742ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_ThunkOrdinal>(
743ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines      Symbol, &IDiaSymbol::get_thunkOrdinal);
744ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
745ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
746ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint64_t DIARawSymbol::getLength() const {
747ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_length);
748ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
749ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
750ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint64_t DIARawSymbol::getLiveRangeLength() const {
751ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_liveRangeLength);
752ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
753ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
754ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesuint64_t DIARawSymbol::getVirtualAddress() const {
755ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualAddress);
756ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
757ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
758ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesPDB_UdtType DIARawSymbol::getUdtKind() const {
759ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue<DWORD, PDB_UdtType>(Symbol,
760ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                                &IDiaSymbol::get_udtKind);
761ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
762ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
763ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasConstructor() const {
764ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constructor);
765ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
766ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
767ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasCustomCallingConvention() const {
768ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_customCallingConvention);
769ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
770ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
771ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasFarReturn() const {
772ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_farReturn);
773ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
774ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
775ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isCode() const {
776ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_code);
777ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
778ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
779ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isCompilerGenerated() const {
780ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerGenerated);
781ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
782ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
783ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isConstType() const {
784ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constType);
785ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
786ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
787ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isEditAndContinueEnabled() const {
788ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_editAndContinueEnabled);
789ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
790ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
791ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isFunction() const {
792ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_function);
793ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
794ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
795ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::getAddressTaken() const {
796ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressTaken);
797ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
798ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
799ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::getNoStackOrdering() const {
800ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noStackOrdering);
801ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
802ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
803ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasAlloca() const {
804ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAlloca);
805ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
806ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
807ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasAssignmentOperator() const {
808ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAssignmentOperator);
809ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
810ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
811ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasCTypes() const {
812ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCTypes);
813ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
814ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
815ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasCastOperator() const {
816ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasCastOperator);
817ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
818ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
819ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasDebugInfo() const {
820ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasDebugInfo);
821ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
822ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
823ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasEH() const {
824ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEH);
825ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
826ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
827ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasEHa() const {
828ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEHa);
829ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
830ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
831ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasInlAsm() const {
832ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasInlAsm);
833ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
834ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
835ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasInlineAttribute() const {
836ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_inlSpec);
837ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
838ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
839ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasInterruptReturn() const {
840ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_interruptReturn);
841ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
842ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
843ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasFramePointer() const {
844ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_framePointerPresent);
845ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
846ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
847ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasLongJump() const {
848ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasLongJump);
849ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
850ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
851ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasManagedCode() const {
852ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasManagedCode);
853ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
854ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
855ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasNestedTypes() const {
856ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasNestedTypes);
857ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
858ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
859ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasNoInlineAttribute() const {
860ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noInline);
861ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
862ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
863ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasNoReturnAttribute() const {
864ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noReturn);
865ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
866ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
867ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasOptimizedCodeDebugInfo() const {
868ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_optimizedCodeDebugInfo);
869ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
870ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
871ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasOverloadedOperator() const {
872ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_overloadedOperator);
873ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
874ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
875ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasSEH() const {
876ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSEH);
877ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
878ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
879ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasSecurityChecks() const {
880ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSecurityChecks);
881ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
882ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
883ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasSetJump() const {
884ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSetJump);
885ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
886ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
887ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasStrictGSCheck() const {
888ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_strictGSCheck);
889ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
890ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
891ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isAcceleratorGroupSharedLocal() const {
892ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
893ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_isAcceleratorGroupSharedLocal);
894ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
895ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
896ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isAcceleratorPointerTagLiveRange() const {
897ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
898ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_isAcceleratorPointerTagLiveRange);
899ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
900ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
901ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isAcceleratorStubFunction() const {
902ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAcceleratorStubFunction);
903ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
904ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
905ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isAggregated() const {
906ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAggregated);
907ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
908ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
909ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isIntroVirtualFunction() const {
910ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intro);
911ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
912ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
913ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isCVTCIL() const {
914ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCVTCIL);
915ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
916ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
917ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isConstructorVirtualBase() const {
918ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isConstructorVirtualBase);
919ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
920ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
921ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isCxxReturnUdt() const {
922ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCxxReturnUdt);
923ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
924ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
925ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isDataAligned() const {
926ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isDataAligned);
927ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
928ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
929ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isHLSLData() const {
930ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHLSLData);
931ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
932ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
933ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isHotpatchable() const {
934ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHotpatchable);
935ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
936ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
937ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isIndirectVirtualBaseClass() const {
938ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_indirectVirtualBaseClass);
939ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
940ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
941ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isInterfaceUdt() const {
942ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isInterfaceUdt);
943ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
944ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
945ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isIntrinsic() const {
946ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intrinsic);
947ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
948ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
949ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isLTCG() const {
950ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isLTCG);
951ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
952ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
953ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isLocationControlFlowDependent() const {
954ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
955ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_isLocationControlFlowDependent);
956ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
957ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
958ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isMSILNetmodule() const {
959ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMSILNetmodule);
960ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
961ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
962ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isMatrixRowMajor() const {
963ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMatrixRowMajor);
964ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
965ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
966ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isManagedCode() const {
967ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_managed);
968ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
969ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
970ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isMSILCode() const {
971ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_msil);
972ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
973ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
974ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isMultipleInheritance() const {
975ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMultipleInheritance);
976ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
977ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
978ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isNaked() const {
979ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isNaked);
980ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
981ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
982ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isNested() const {
983ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_nested);
984ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
985ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
986ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isOptimizedAway() const {
987ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isOptimizedAway);
988ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
989ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
990ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isPacked() const {
991ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_packed);
992ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
993ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
994ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isPointerBasedOnSymbolValue() const {
995ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol,
996ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                            &IDiaSymbol::get_isPointerBasedOnSymbolValue);
997ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
998ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
999ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isPointerToDataMember() const {
1000ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToDataMember);
1001ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1002ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1003ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isPointerToMemberFunction() const {
1004ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToMemberFunction);
1005ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1006ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1007ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isPureVirtual() const {
1008ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_pure);
1009ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1010ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1011ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isRValueReference() const {
1012ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_RValueReference);
1013ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1014ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1015ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isRefUdt() const {
1016ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isRefUdt);
1017ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1018ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1019ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isReference() const {
1020ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_reference);
1021ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1022ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1023ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isRestrictedType() const {
1024ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_restrictedType);
1025ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1026ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1027ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isReturnValue() const {
1028ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isReturnValue);
1029ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1030ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1031ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isSafeBuffers() const {
1032ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSafeBuffers);
1033ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1034ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1035ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isScoped() const {
1036ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_scoped);
1037ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1038ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1039ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isSdl() const {
1040ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSdl);
1041ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1042ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1043ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isSingleInheritance() const {
1044ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSingleInheritance);
1045ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1046ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1047ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isSplitted() const {
1048ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSplitted);
1049ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1050ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1051ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isStatic() const {
1052ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStatic);
1053ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1054ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1055ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::hasPrivateSymbols() const {
1056ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  // hasPrivateSymbols is the opposite of isStripped, but we expose
1057ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  // hasPrivateSymbols as a more intuitive interface.
1058ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return !PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStripped);
1059ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1060ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1061ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isUnalignedType() const {
1062ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unalignedType);
1063ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1064ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1065ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isUnreached() const {
1066ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_notReached);
1067ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1068ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1069ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isValueUdt() const {
1070ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isValueUdt);
1071ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1072ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1073ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isVirtual() const {
1074ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtual);
1075ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1076ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1077ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isVirtualBaseClass() const {
1078ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseClass);
1079ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1080ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1081ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isVirtualInheritance() const {
1082ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isVirtualInheritance);
1083ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1084ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1085ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::isVolatileType() const {
1086ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_volatileType);
1087ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1088ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1089ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesbool DIARawSymbol::wasInlined() const {
1090ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_wasInlined);
1091ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1092ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
1093ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesstd::string DIARawSymbol::getUnused() const {
1094ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unused);
1095ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
1096