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