Run dos2unix against llvm-pdbdump.
authorZachary Turner <zturner@google.com>
Tue, 27 Jan 2015 23:02:23 +0000 (23:02 +0000)
committerZachary Turner <zturner@google.com>
Tue, 27 Jan 2015 23:02:23 +0000 (23:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227262 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-pdbdump/CMakeLists.txt
tools/llvm-pdbdump/DIAExtras.cpp
tools/llvm-pdbdump/DIAExtras.h
tools/llvm-pdbdump/DIASymbol.cpp
tools/llvm-pdbdump/DIASymbol.h
tools/llvm-pdbdump/llvm-pdbdump.h

index 49f828cf200839159a458b463d4aa7ab6686b122..6cad395b28127a6f2ed53bebb1b4675816b7043a 100644 (file)
@@ -1,28 +1,28 @@
-set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")\r
-\r
-# Due to a bug in MSVC 2013's installation software, it is possible\r
-# for MSVC 2013 to write the DIA SDK into the Visual Studio 2012\r
-# install directory.  If this happens, the installation is corrupt\r
-# and there's nothing we can do.  It happens with enough frequency\r
-# though that we should handle it.  We do so by simply checking that\r
-# the DIA SDK folder exists.  Should this happen you will need to\r
-# uninstall VS 2012 and then re-install VS 2013.\r
-if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})\r
-  set(LLVM_LINK_COMPONENTS\r
-    Support\r
-    )\r
-\r
-  include_directories(${MSVC_DIA_SDK_DIR}/include)\r
-  if (CMAKE_SIZEOF_VOID_P EQUAL 8)\r
-    link_directories(${MSVC_DIA_SDK_DIR}/lib/amd64)\r
-  else()\r
-    link_directories(${MSVC_DIA_SDK_DIR}/lib)\r
-  endif()\r
-\r
-  add_llvm_tool(llvm-pdbdump\r
-    llvm-pdbdump.cpp\r
-    DIAExtras.cpp\r
-    DIASymbol.cpp\r
-    )\r
-  target_link_libraries(llvm-pdbdump diaguids)\r
-endif()\r
+set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
+
+# Due to a bug in MSVC 2013's installation software, it is possible
+# for MSVC 2013 to write the DIA SDK into the Visual Studio 2012
+# install directory.  If this happens, the installation is corrupt
+# and there's nothing we can do.  It happens with enough frequency
+# though that we should handle it.  We do so by simply checking that
+# the DIA SDK folder exists.  Should this happen you will need to
+# uninstall VS 2012 and then re-install VS 2013.
+if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
+  set(LLVM_LINK_COMPONENTS
+    Support
+    )
+
+  include_directories(${MSVC_DIA_SDK_DIR}/include)
+  if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+    link_directories(${MSVC_DIA_SDK_DIR}/lib/amd64)
+  else()
+    link_directories(${MSVC_DIA_SDK_DIR}/lib)
+  endif()
+
+  add_llvm_tool(llvm-pdbdump
+    llvm-pdbdump.cpp
+    DIAExtras.cpp
+    DIASymbol.cpp
+    )
+  target_link_libraries(llvm-pdbdump diaguids)
+endif()
index 55d588f2cd5b5111b48145923f284ce33c9801cd..eae4e4aede2dea55a001c3d410d80c35b73944e3 100644 (file)
-//===- DIAExtras.cpp - Helper classes and functions for DIA C++ ---------*-===//\r
-//\r
-//                     The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-#include "llvm/Support/Format.h"\r
-#include "llvm/Support/raw_ostream.h"\r
-\r
-#include "llvm-pdbdump.h"\r
-#include "DIAExtras.h"\r
-\r
-using namespace llvm;\r
-using namespace llvm::sys::windows;\r
-\r
-#define PRINT_ENUM_VALUE_CASE(Value)                                           \\r
-  case Value:                                                                  \\r
-    outs() << #Value;                                                          \\r
-    break;\r
-\r
-raw_ostream &llvm::operator<<(raw_ostream &Stream, DiaSymTagEnum SymTag) {\r
-  switch (SymTag) {\r
-    PRINT_ENUM_VALUE_CASE(SymTagNull)\r
-    PRINT_ENUM_VALUE_CASE(SymTagExe)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCompiland)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCompilandDetails)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCompilandEnv)\r
-    PRINT_ENUM_VALUE_CASE(SymTagFunction)\r
-    PRINT_ENUM_VALUE_CASE(SymTagBlock)\r
-    PRINT_ENUM_VALUE_CASE(SymTagData)\r
-    PRINT_ENUM_VALUE_CASE(SymTagAnnotation)\r
-    PRINT_ENUM_VALUE_CASE(SymTagLabel)\r
-    PRINT_ENUM_VALUE_CASE(SymTagPublicSymbol)\r
-    PRINT_ENUM_VALUE_CASE(SymTagUDT)\r
-    PRINT_ENUM_VALUE_CASE(SymTagEnum)\r
-    PRINT_ENUM_VALUE_CASE(SymTagFunctionType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagPointerType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagArrayType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagBaseType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagTypedef)\r
-    PRINT_ENUM_VALUE_CASE(SymTagBaseClass)\r
-    PRINT_ENUM_VALUE_CASE(SymTagFriend)\r
-    PRINT_ENUM_VALUE_CASE(SymTagFunctionArgType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagFuncDebugStart)\r
-    PRINT_ENUM_VALUE_CASE(SymTagFuncDebugEnd)\r
-    PRINT_ENUM_VALUE_CASE(SymTagUsingNamespace)\r
-    PRINT_ENUM_VALUE_CASE(SymTagVTableShape)\r
-    PRINT_ENUM_VALUE_CASE(SymTagVTable)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCustom)\r
-    PRINT_ENUM_VALUE_CASE(SymTagThunk)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCustomType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagManagedType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagDimension)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCallSite)\r
-    PRINT_ENUM_VALUE_CASE(SymTagInlineSite)\r
-    PRINT_ENUM_VALUE_CASE(SymTagBaseInterface)\r
-    PRINT_ENUM_VALUE_CASE(SymTagVectorType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagMatrixType)\r
-    PRINT_ENUM_VALUE_CASE(SymTagHLSLType)\r
-#if (_MSC_FULL_VER >= 180031101)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCaller)\r
-    PRINT_ENUM_VALUE_CASE(SymTagCallee)\r
-#endif\r
-    PRINT_ENUM_VALUE_CASE(SymTagMax)\r
-  }\r
-  outs() << " {" << (DWORD)SymTag << "}";\r
-  return Stream;\r
-}\r
-\r
-raw_ostream &llvm::operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType) {\r
-  switch (CpuType) {\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_8080)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_8086)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_80286)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_80386)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_80486)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUM)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMPRO)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMIII)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS16)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS32)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS64)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSI)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSII)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIII)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIV)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSV)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_M68000)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_M68010)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_M68020)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_M68030)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_M68040)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164A)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21264)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21364)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC601)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC603)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC604)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC620)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PPCFP)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_PPCBE)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_SH3)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_SH3E)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_SH3DSP)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_SH4)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_SHMEDIA)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM3)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4T)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5T)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM6)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_XMAC)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_WMMX)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM7)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_OMNI)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_IA64)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_IA64_2)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_CEE)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_AM33)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_M32R)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_TRICORE)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_X64)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_EBC)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_THUMB)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARMNT)\r
-#if (_MSC_FULL_VER >= 180031101)\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM64)\r
-#endif\r
-    PRINT_ENUM_VALUE_CASE(CV_CFL_D3D11_SHADER)\r
-  }\r
-  outs() << " {" << llvm::format_hex((DWORD)CpuType, 2, true) << "}";\r
-  return Stream;\r
-}\r
-\r
-raw_ostream &llvm::operator<<(raw_ostream &Stream,\r
-                              MachineTypeEnum MachineType) {\r
-  switch (MachineType) {\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeUnknown)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeX86)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeR3000)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeR4000)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeR10000)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeWCEMIPSv2)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeAlpha)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeSH3)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeSH3DSP)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeSH3E)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeSH4)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeSH5)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeArm)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeThumb)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeArmNT)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeAM33)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypePowerPC)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypePowerPCFP)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeIa64)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeMips16)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeAlpha64)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu16)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeTriCore)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeCEF)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeEBC)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeAmd64)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeM32R)\r
-    PRINT_ENUM_VALUE_CASE(MachineTypeCEE)\r
-  }\r
-  outs() << " {" << llvm::format_hex((DWORD)MachineType, 2, true) << "}";\r
-  return Stream;\r
-}\r
+//===- DIAExtras.cpp - Helper classes and functions for DIA C++ ---------*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include "llvm/Support/Format.h"
+#include "llvm/Support/raw_ostream.h"
+
+#include "llvm-pdbdump.h"
+#include "DIAExtras.h"
+
+using namespace llvm;
+using namespace llvm::sys::windows;
+
+#define PRINT_ENUM_VALUE_CASE(Value)                                           \
+  case Value:                                                                  \
+    outs() << #Value;                                                          \
+    break;
+
+raw_ostream &llvm::operator<<(raw_ostream &Stream, DiaSymTagEnum SymTag) {
+  switch (SymTag) {
+    PRINT_ENUM_VALUE_CASE(SymTagNull)
+    PRINT_ENUM_VALUE_CASE(SymTagExe)
+    PRINT_ENUM_VALUE_CASE(SymTagCompiland)
+    PRINT_ENUM_VALUE_CASE(SymTagCompilandDetails)
+    PRINT_ENUM_VALUE_CASE(SymTagCompilandEnv)
+    PRINT_ENUM_VALUE_CASE(SymTagFunction)
+    PRINT_ENUM_VALUE_CASE(SymTagBlock)
+    PRINT_ENUM_VALUE_CASE(SymTagData)
+    PRINT_ENUM_VALUE_CASE(SymTagAnnotation)
+    PRINT_ENUM_VALUE_CASE(SymTagLabel)
+    PRINT_ENUM_VALUE_CASE(SymTagPublicSymbol)
+    PRINT_ENUM_VALUE_CASE(SymTagUDT)
+    PRINT_ENUM_VALUE_CASE(SymTagEnum)
+    PRINT_ENUM_VALUE_CASE(SymTagFunctionType)
+    PRINT_ENUM_VALUE_CASE(SymTagPointerType)
+    PRINT_ENUM_VALUE_CASE(SymTagArrayType)
+    PRINT_ENUM_VALUE_CASE(SymTagBaseType)
+    PRINT_ENUM_VALUE_CASE(SymTagTypedef)
+    PRINT_ENUM_VALUE_CASE(SymTagBaseClass)
+    PRINT_ENUM_VALUE_CASE(SymTagFriend)
+    PRINT_ENUM_VALUE_CASE(SymTagFunctionArgType)
+    PRINT_ENUM_VALUE_CASE(SymTagFuncDebugStart)
+    PRINT_ENUM_VALUE_CASE(SymTagFuncDebugEnd)
+    PRINT_ENUM_VALUE_CASE(SymTagUsingNamespace)
+    PRINT_ENUM_VALUE_CASE(SymTagVTableShape)
+    PRINT_ENUM_VALUE_CASE(SymTagVTable)
+    PRINT_ENUM_VALUE_CASE(SymTagCustom)
+    PRINT_ENUM_VALUE_CASE(SymTagThunk)
+    PRINT_ENUM_VALUE_CASE(SymTagCustomType)
+    PRINT_ENUM_VALUE_CASE(SymTagManagedType)
+    PRINT_ENUM_VALUE_CASE(SymTagDimension)
+    PRINT_ENUM_VALUE_CASE(SymTagCallSite)
+    PRINT_ENUM_VALUE_CASE(SymTagInlineSite)
+    PRINT_ENUM_VALUE_CASE(SymTagBaseInterface)
+    PRINT_ENUM_VALUE_CASE(SymTagVectorType)
+    PRINT_ENUM_VALUE_CASE(SymTagMatrixType)
+    PRINT_ENUM_VALUE_CASE(SymTagHLSLType)
+#if (_MSC_FULL_VER >= 180031101)
+    PRINT_ENUM_VALUE_CASE(SymTagCaller)
+    PRINT_ENUM_VALUE_CASE(SymTagCallee)
+#endif
+    PRINT_ENUM_VALUE_CASE(SymTagMax)
+  }
+  outs() << " {" << (DWORD)SymTag << "}";
+  return Stream;
+}
+
+raw_ostream &llvm::operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType) {
+  switch (CpuType) {
+    PRINT_ENUM_VALUE_CASE(CV_CFL_8080)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_8086)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_80286)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_80386)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_80486)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUM)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMPRO)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMIII)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS16)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS32)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS64)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSI)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSII)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIII)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIV)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSV)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_M68000)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_M68010)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_M68020)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_M68030)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_M68040)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164A)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21264)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21364)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC601)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC603)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC604)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PPC620)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PPCFP)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_PPCBE)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_SH3)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_SH3E)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_SH3DSP)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_SH4)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_SHMEDIA)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM3)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4T)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5T)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM6)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_XMAC)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_WMMX)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM7)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_OMNI)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_IA64)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_IA64_2)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_CEE)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_AM33)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_M32R)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_TRICORE)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_X64)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_EBC)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_THUMB)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARMNT)
+#if (_MSC_FULL_VER >= 180031101)
+    PRINT_ENUM_VALUE_CASE(CV_CFL_ARM64)
+#endif
+    PRINT_ENUM_VALUE_CASE(CV_CFL_D3D11_SHADER)
+  }
+  outs() << " {" << llvm::format_hex((DWORD)CpuType, 2, true) << "}";
+  return Stream;
+}
+
+raw_ostream &llvm::operator<<(raw_ostream &Stream,
+                              MachineTypeEnum MachineType) {
+  switch (MachineType) {
+    PRINT_ENUM_VALUE_CASE(MachineTypeUnknown)
+    PRINT_ENUM_VALUE_CASE(MachineTypeX86)
+    PRINT_ENUM_VALUE_CASE(MachineTypeR3000)
+    PRINT_ENUM_VALUE_CASE(MachineTypeR4000)
+    PRINT_ENUM_VALUE_CASE(MachineTypeR10000)
+    PRINT_ENUM_VALUE_CASE(MachineTypeWCEMIPSv2)
+    PRINT_ENUM_VALUE_CASE(MachineTypeAlpha)
+    PRINT_ENUM_VALUE_CASE(MachineTypeSH3)
+    PRINT_ENUM_VALUE_CASE(MachineTypeSH3DSP)
+    PRINT_ENUM_VALUE_CASE(MachineTypeSH3E)
+    PRINT_ENUM_VALUE_CASE(MachineTypeSH4)
+    PRINT_ENUM_VALUE_CASE(MachineTypeSH5)
+    PRINT_ENUM_VALUE_CASE(MachineTypeArm)
+    PRINT_ENUM_VALUE_CASE(MachineTypeThumb)
+    PRINT_ENUM_VALUE_CASE(MachineTypeArmNT)
+    PRINT_ENUM_VALUE_CASE(MachineTypeAM33)
+    PRINT_ENUM_VALUE_CASE(MachineTypePowerPC)
+    PRINT_ENUM_VALUE_CASE(MachineTypePowerPCFP)
+    PRINT_ENUM_VALUE_CASE(MachineTypeIa64)
+    PRINT_ENUM_VALUE_CASE(MachineTypeMips16)
+    PRINT_ENUM_VALUE_CASE(MachineTypeAlpha64)
+    PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu)
+    PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu16)
+    PRINT_ENUM_VALUE_CASE(MachineTypeTriCore)
+    PRINT_ENUM_VALUE_CASE(MachineTypeCEF)
+    PRINT_ENUM_VALUE_CASE(MachineTypeEBC)
+    PRINT_ENUM_VALUE_CASE(MachineTypeAmd64)
+    PRINT_ENUM_VALUE_CASE(MachineTypeM32R)
+    PRINT_ENUM_VALUE_CASE(MachineTypeCEE)
+  }
+  outs() << " {" << llvm::format_hex((DWORD)MachineType, 2, true) << "}";
+  return Stream;
+}
index 99d37e13c5619a0e431b07b397ab36d138173c3b..6561a09b74f7e55214fd7d65db41020dd16c139c 100644 (file)
-//===- DIAExtras.h - Helper classes and functions for accessing DIA C++ -*-===//\r
-//\r
-//                     The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-//\r
-// Defines helper types, classes, and functions for working with DIA.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-\r
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H\r
-#define LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H\r
-\r
-#include "llvm/ADT/SmallString.h"\r
-#include "llvm/Support/raw_ostream.h"\r
-\r
-#include "COMExtras.h"\r
-\r
-namespace llvm {\r
-namespace sys {\r
-namespace windows {\r
-\r
-typedef llvm::SmallString<16> DIAString;\r
-\r
-template <class T> class DIAResult {\r
-public:\r
-  DIAResult() : IsValid(false) {}\r
-  DIAResult(const T &ResultValue) : Result(ResultValue), IsValid(true) {}\r
-\r
-  bool hasValue() const { return IsValid; }\r
-  T value() const { return Result; }\r
-\r
-  void dump(StringRef Name, unsigned IndentLevel) const {\r
-    if (!hasValue())\r
-      return;\r
-    outs().indent(IndentLevel);\r
-    outs() << Name << ": " << value() << "\n";\r
-  }\r
-\r
-private:\r
-  T Result;\r
-  bool IsValid;\r
-};\r
-\r
-template <>\r
-void DIAResult<BOOL>::dump(StringRef Name, unsigned IndentLevel) const {\r
-  if (!hasValue())\r
-    return;\r
-  outs().indent(IndentLevel);\r
-  outs() << Name << ": " << (value() ? "true" : "false") << "\n";\r
-}\r
-\r
-template <>\r
-void DIAResult<GUID>::dump(StringRef Name, unsigned IndentLevel) const {\r
-  if (!hasValue())\r
-    return;\r
-  std::string Guid8;\r
-  CComBSTR GuidBSTR(value());\r
-  BSTRToUTF8(GuidBSTR.m_str, Guid8);\r
-\r
-  outs().indent(IndentLevel);\r
-  outs() << Name << ": " << Guid8 << "\n";\r
-}\r
-\r
-// MSDN documents the IDiaSymbol::get_machineType method as returning a value\r
-// from the CV_CPU_TYPE_e enumeration.  This documentation is wrong, however,\r
-// and this method actually returns a value from the IMAGE_FILE_xxx set of\r
-// defines from winnt.h.  These correspond to the platform magic number in\r
-// the COFF file.  This enumeration is built from the set of values in winnt.h\r
-enum MachineTypeEnum {\r
-  MachineTypeUnknown = IMAGE_FILE_MACHINE_UNKNOWN,\r
-  MachineTypeX86 = IMAGE_FILE_MACHINE_I386,\r
-  MachineTypeR3000 = IMAGE_FILE_MACHINE_R3000,\r
-  MachineTypeR4000 = IMAGE_FILE_MACHINE_R4000,\r
-  MachineTypeR10000 = IMAGE_FILE_MACHINE_R10000,\r
-  MachineTypeWCEMIPSv2 = IMAGE_FILE_MACHINE_WCEMIPSV2,\r
-  MachineTypeAlpha = IMAGE_FILE_MACHINE_ALPHA,\r
-  MachineTypeSH3 = IMAGE_FILE_MACHINE_SH3,\r
-  MachineTypeSH3DSP = IMAGE_FILE_MACHINE_SH3DSP,\r
-  MachineTypeSH3E = IMAGE_FILE_MACHINE_SH3E,\r
-  MachineTypeSH4 = IMAGE_FILE_MACHINE_SH4,\r
-  MachineTypeSH5 = IMAGE_FILE_MACHINE_SH5,\r
-  MachineTypeArm = IMAGE_FILE_MACHINE_ARM,\r
-  MachineTypeThumb = IMAGE_FILE_MACHINE_THUMB,\r
-  MachineTypeArmNT = IMAGE_FILE_MACHINE_ARMNT,\r
-  MachineTypeAM33 = IMAGE_FILE_MACHINE_AM33,\r
-  MachineTypePowerPC = IMAGE_FILE_MACHINE_POWERPC,\r
-  MachineTypePowerPCFP = IMAGE_FILE_MACHINE_POWERPCFP,\r
-  MachineTypeIa64 = IMAGE_FILE_MACHINE_IA64,\r
-  MachineTypeMips16 = IMAGE_FILE_MACHINE_MIPS16,\r
-  MachineTypeAlpha64 = IMAGE_FILE_MACHINE_ALPHA64,\r
-  MachineTypeMipsFpu = IMAGE_FILE_MACHINE_MIPSFPU,\r
-  MachineTypeMipsFpu16 = IMAGE_FILE_MACHINE_MIPSFPU16,\r
-  MachineTypeTriCore = IMAGE_FILE_MACHINE_TRICORE,\r
-  MachineTypeCEF = IMAGE_FILE_MACHINE_CEF,\r
-  MachineTypeEBC = IMAGE_FILE_MACHINE_EBC,\r
-  MachineTypeAmd64 = IMAGE_FILE_MACHINE_AMD64,\r
-  MachineTypeM32R = IMAGE_FILE_MACHINE_M32R,\r
-  MachineTypeCEE = IMAGE_FILE_MACHINE_CEE,\r
-};\r
-\r
-// SymTagEnum has the unfortunate property that it is not only the name of\r
-// the enum, but also the name of one of the values of the enum.  So that we\r
-// don't have to always type "enum SymTagEnum", we typedef this to a different\r
-// name so that we can refer to it more easily.\r
-typedef enum SymTagEnum DiaSymTagEnum;\r
-\r
-typedef CComPtr<IDiaSymbol> DiaSymbolPtr;\r
-\r
-} // namespace windows\r
-} // namespace sys\r
-} // namespace llvm\r
-\r
-namespace llvm {\r
-class raw_ostream;\r
-\r
-raw_ostream &operator<<(raw_ostream &Stream,\r
-                        llvm::sys::windows::DiaSymTagEnum SymTag);\r
-raw_ostream &operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType);\r
-raw_ostream &operator<<(raw_ostream &Stream,\r
-                        llvm::sys::windows::MachineTypeEnum CpuType);\r
-}\r
-\r
-#endif\r
+//===- DIAExtras.h - Helper classes and functions for accessing DIA C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Defines helper types, classes, and functions for working with DIA.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H
+#define LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H
+
+#include "llvm/ADT/SmallString.h"
+#include "llvm/Support/raw_ostream.h"
+
+#include "COMExtras.h"
+
+namespace llvm {
+namespace sys {
+namespace windows {
+
+typedef llvm::SmallString<16> DIAString;
+
+template <class T> class DIAResult {
+public:
+  DIAResult() : IsValid(false) {}
+  DIAResult(const T &ResultValue) : Result(ResultValue), IsValid(true) {}
+
+  bool hasValue() const { return IsValid; }
+  T value() const { return Result; }
+
+  void dump(StringRef Name, unsigned IndentLevel) const {
+    if (!hasValue())
+      return;
+    outs().indent(IndentLevel);
+    outs() << Name << ": " << value() << "\n";
+  }
+
+private:
+  T Result;
+  bool IsValid;
+};
+
+template <>
+void DIAResult<BOOL>::dump(StringRef Name, unsigned IndentLevel) const {
+  if (!hasValue())
+    return;
+  outs().indent(IndentLevel);
+  outs() << Name << ": " << (value() ? "true" : "false") << "\n";
+}
+
+template <>
+void DIAResult<GUID>::dump(StringRef Name, unsigned IndentLevel) const {
+  if (!hasValue())
+    return;
+  std::string Guid8;
+  CComBSTR GuidBSTR(value());
+  BSTRToUTF8(GuidBSTR.m_str, Guid8);
+
+  outs().indent(IndentLevel);
+  outs() << Name << ": " << Guid8 << "\n";
+}
+
+// MSDN documents the IDiaSymbol::get_machineType method as returning a value
+// from the CV_CPU_TYPE_e enumeration.  This documentation is wrong, however,
+// and this method actually returns a value from the IMAGE_FILE_xxx set of
+// defines from winnt.h.  These correspond to the platform magic number in
+// the COFF file.  This enumeration is built from the set of values in winnt.h
+enum MachineTypeEnum {
+  MachineTypeUnknown = IMAGE_FILE_MACHINE_UNKNOWN,
+  MachineTypeX86 = IMAGE_FILE_MACHINE_I386,
+  MachineTypeR3000 = IMAGE_FILE_MACHINE_R3000,
+  MachineTypeR4000 = IMAGE_FILE_MACHINE_R4000,
+  MachineTypeR10000 = IMAGE_FILE_MACHINE_R10000,
+  MachineTypeWCEMIPSv2 = IMAGE_FILE_MACHINE_WCEMIPSV2,
+  MachineTypeAlpha = IMAGE_FILE_MACHINE_ALPHA,
+  MachineTypeSH3 = IMAGE_FILE_MACHINE_SH3,
+  MachineTypeSH3DSP = IMAGE_FILE_MACHINE_SH3DSP,
+  MachineTypeSH3E = IMAGE_FILE_MACHINE_SH3E,
+  MachineTypeSH4 = IMAGE_FILE_MACHINE_SH4,
+  MachineTypeSH5 = IMAGE_FILE_MACHINE_SH5,
+  MachineTypeArm = IMAGE_FILE_MACHINE_ARM,
+  MachineTypeThumb = IMAGE_FILE_MACHINE_THUMB,
+  MachineTypeArmNT = IMAGE_FILE_MACHINE_ARMNT,
+  MachineTypeAM33 = IMAGE_FILE_MACHINE_AM33,
+  MachineTypePowerPC = IMAGE_FILE_MACHINE_POWERPC,
+  MachineTypePowerPCFP = IMAGE_FILE_MACHINE_POWERPCFP,
+  MachineTypeIa64 = IMAGE_FILE_MACHINE_IA64,
+  MachineTypeMips16 = IMAGE_FILE_MACHINE_MIPS16,
+  MachineTypeAlpha64 = IMAGE_FILE_MACHINE_ALPHA64,
+  MachineTypeMipsFpu = IMAGE_FILE_MACHINE_MIPSFPU,
+  MachineTypeMipsFpu16 = IMAGE_FILE_MACHINE_MIPSFPU16,
+  MachineTypeTriCore = IMAGE_FILE_MACHINE_TRICORE,
+  MachineTypeCEF = IMAGE_FILE_MACHINE_CEF,
+  MachineTypeEBC = IMAGE_FILE_MACHINE_EBC,
+  MachineTypeAmd64 = IMAGE_FILE_MACHINE_AMD64,
+  MachineTypeM32R = IMAGE_FILE_MACHINE_M32R,
+  MachineTypeCEE = IMAGE_FILE_MACHINE_CEE,
+};
+
+// SymTagEnum has the unfortunate property that it is not only the name of
+// the enum, but also the name of one of the values of the enum.  So that we
+// don't have to always type "enum SymTagEnum", we typedef this to a different
+// name so that we can refer to it more easily.
+typedef enum SymTagEnum DiaSymTagEnum;
+
+typedef CComPtr<IDiaSymbol> DiaSymbolPtr;
+
+} // namespace windows
+} // namespace sys
+} // namespace llvm
+
+namespace llvm {
+class raw_ostream;
+
+raw_ostream &operator<<(raw_ostream &Stream,
+                        llvm::sys::windows::DiaSymTagEnum SymTag);
+raw_ostream &operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType);
+raw_ostream &operator<<(raw_ostream &Stream,
+                        llvm::sys::windows::MachineTypeEnum CpuType);
+}
+
+#endif
index bcbd71ff80d0c9d5fd9acd6057de4fe03e18c0a5..753f6f9b4eab94660164a51efdf9c17c9dedc24c 100644 (file)
-//===- DIASymbol.cpp - Dump debug info from a PDB file ----------*- C++ -*-===//\r
-//\r
-//                     The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-\r
-#include "llvm-pdbdump.h"\r
-#include "DIASymbol.h"\r
-\r
-using namespace llvm::sys::windows;\r
-\r
-DIASymbol::DIASymbol(IDiaSymbol *DiaSymbol) : Symbol(DiaSymbol) {\r
-  Symbol->AddRef();\r
-}\r
-\r
-DIASymbol::~DIASymbol() { Symbol->Release(); }\r
-\r
-void DIASymbol::fullDump(int IndentLevel) {\r
-  getLexicalParent().dump("Lexical parent", IndentLevel);\r
-  getClassParent().dump("Class parent", IndentLevel);\r
-  getType().dump("Type", IndentLevel);\r
-  getArrayIndexType().dump("Array index type", IndentLevel);\r
-  getVirtualTableShape().dump("Vtable shape", IndentLevel);\r
-  getLowerBound().dump("Lower bound", IndentLevel);\r
-  getUpperBound().dump("Upper bound", IndentLevel);\r
-  getObjectPointerType().dump("Object pointer type", IndentLevel);\r
-  getContainer().dump("Container", IndentLevel);\r
-  getVirtualBaseTableType().dump("Virtual base table type", IndentLevel);\r
-  getUnmodifiedType().dump("Unmodified type", IndentLevel);\r
-  getSubType().dump("Sub type", IndentLevel);\r
-  getBaseSymbol().dump("Base symbol", IndentLevel);\r
-\r
-#if (_MSC_FULL_VER >= 180031101)\r
-  // These methods are only available on VS 2013 SP4 and higher.\r
-  isPGO().dump("Is PGO", IndentLevel);\r
-  hasValidPGOCounts().dump("Has valid PGO counts", IndentLevel);\r
-  isOptimizedForSpeed().dump("Is optimized for speed", IndentLevel);\r
-  getPGOEntryCount().dump("PGO entry count", IndentLevel);\r
-  getPGOEdgeCount().dump("PGO edge count", IndentLevel);\r
-  getPGODynamicInstructionCount().dump("PGO dynamic instruction count",\r
-                                       IndentLevel);\r
-  getStaticSize().dump("Static size", IndentLevel);\r
-  getFinalLiveStaticSize().dump("Final live static size", IndentLevel);\r
-  getPhaseName().dump("Phase name", IndentLevel);\r
-  hasControlFlowCheck().dump("Has control flow check", IndentLevel);\r
-#endif\r
-\r
-  getAccess().dump("Access", IndentLevel);\r
-  getAddressOffset().dump("Address Offset", IndentLevel);\r
-  getAddressSection().dump("Address Section", IndentLevel);\r
-  getAddressTaken().dump("Address Taken", IndentLevel);\r
-  getAge().dump("Age", IndentLevel);\r
-  getArrayIndexTypeId().dump("Array Index Type Id", IndentLevel);\r
-  getBackEndMajor().dump("Back End Major", IndentLevel);\r
-  getBackEndMinor().dump("Back End Minor", IndentLevel);\r
-  getBackEndBuild().dump("Back End Build", IndentLevel);\r
-  getBaseDataOffset().dump("Base Data Offset", IndentLevel);\r
-  getBaseDataSlot().dump("Base Data Slot", IndentLevel);\r
-  getBaseSymbolId().dump("Base Symbol Id", IndentLevel);\r
-  getBaseType().dump("Base Type", IndentLevel);\r
-  getBitPosition().dump("Bit Position", IndentLevel);\r
-  getBuiltInKind().dump("Built In Kind", IndentLevel);\r
-  getCallingConvention().dump("Calling Convention", IndentLevel);\r
-  getClassParentId().dump("Class Parent Id", IndentLevel);\r
-  isCode().dump("Code", IndentLevel);\r
-  isCompilerGenerated().dump("Compiler Generated", IndentLevel);\r
-  getCompilerName().dump("Compiler Name", IndentLevel);\r
-  hasConstructor().dump("Constructor", IndentLevel);\r
-  isConstType().dump("Const Type", IndentLevel);\r
-  getCount().dump("Count", IndentLevel);\r
-  getCountLiveRanges().dump("Count Live Ranges", IndentLevel);\r
-  hasCustomCallingConvention().dump("Custom Calling Convention", IndentLevel);\r
-  getDataKind().dump("Data Kind", IndentLevel);\r
-  isEditAndContinueEnabled().dump("Edit and Continue Enabled", IndentLevel);\r
-  hasFarReturn().dump("Far Return", IndentLevel);\r
-  getFrontEndMajor().dump("Front End Major", IndentLevel);\r
-  getFrontEndMinor().dump("Front End Minor", IndentLevel);\r
-  getFrontEndBuild().dump("Front End Build", IndentLevel);\r
-  isFunction().dump("Function", IndentLevel);\r
-  getGuid().dump("GUID", IndentLevel);\r
-  hasAlloca().dump("Has Alloca", IndentLevel);\r
-  hasAssignmentOperator().dump("Has Assignment Operator", IndentLevel);\r
-  hasCastOperator().dump("Has Cast Operator", IndentLevel);\r
-  hasDebugInfo().dump("Has Debug Info", IndentLevel);\r
-  hasEH().dump("Has EH", IndentLevel);\r
-  hasEHa().dump("Has EHa", IndentLevel);\r
-  hasInlAsm().dump("Has Inline Asm", IndentLevel);\r
-  hasLongJump().dump("Has longjmp", IndentLevel);\r
-  hasManagedCode().dump("Has Managed Code", IndentLevel);\r
-  hasNestedTypes().dump("Has Nested Types", IndentLevel);\r
-  hasSecurityChecks().dump("Has Security Checks", IndentLevel);\r
-  hasSEH().dump("Has SEH", IndentLevel);\r
-  hasSetJump().dump("Has setjmp", IndentLevel);\r
-  isIndirectVirtualBaseClass().dump("Is indirect virtual base", IndentLevel);\r
-  hasInlineAttribute().dump("Has inline declspec", IndentLevel);\r
-  hasInterruptReturn().dump("Has interrupt return", IndentLevel);\r
-  isBaseVirtualFunction().dump("Is base virtual function", IndentLevel);\r
-  isAcceleratorGroupSharedLocal().dump("Is Accelerator Group Shared Local",\r
-                                       IndentLevel);\r
-  isAcceleratorPointerTagLiveRange().dump(\r
-      "Is Accelerator Pointer Tag Live Range", IndentLevel);\r
-  isAcceleratorStubFunction().dump("Is Accelerator Stub Function", IndentLevel);\r
-  isAggregated().dump("Is aggregated", IndentLevel);\r
-  hasCTypes().dump("Has C types", IndentLevel);\r
-  isCVTCIL().dump("Was converted from MSIL", IndentLevel);\r
-  isDataAligned().dump("Is data aligned", IndentLevel);\r
-  isHLSLData().dump("Is HLSL data", IndentLevel);\r
-  isHotpatchable().dump("Is hot-patchable", IndentLevel);\r
-  isLTCG().dump("Is LTCG", IndentLevel);\r
-  isMatrixRowMajor().dump("Is matrix row major", IndentLevel);\r
-  isMSILNetmodule().dump("Is MSIL .netmodule", IndentLevel);\r
-  isMultipleInheritance().dump("Is multiple inheritance", IndentLevel);\r
-  isNaked().dump("Is naked", IndentLevel);\r
-  isOptimizedAway().dump("Is optimized away", IndentLevel);\r
-  isPointerBasedOnSymbolValue().dump("Is pointer based on symbol value",\r
-                                     IndentLevel);\r
-  isPointerToDataMember().dump("Is pointer to data member", IndentLevel);\r
-  isPointerToMemberFunction().dump("Is pointer to member function",\r
-                                   IndentLevel);\r
-  isReturnValue().dump("Is return value", IndentLevel);\r
-  isSdl().dump("Is SDL", IndentLevel);\r
-  isSingleInheritance().dump("Is single inheritance", IndentLevel);\r
-  isSplitted().dump("Is splitted", IndentLevel);\r
-  isStatic().dump("Is staic", IndentLevel);\r
-  isStripped().dump("Is stripped", IndentLevel);\r
-  isVirtualInheritance().dump("Is virtual inheritance", IndentLevel);\r
-  getLanguage().dump("Language", IndentLevel);\r
-  getLength().dump("Length", IndentLevel);\r
-  getLexicalParentId().dump("Lexical parent id", IndentLevel);\r
-  getLibraryName().dump("Library name", IndentLevel);\r
-  getLiveRangeLength().dump("Live range length", IndentLevel);\r
-  getLiveRangeStartAddressSection().dump("Live range start address section",\r
-                                         IndentLevel);\r
-  getLiveRangeStartAddressOffset().dump("Live range start address offset",\r
-                                        IndentLevel);\r
-  getLiveRangeStartRelativeVirtualAddress().dump("Live range start address RVA",\r
-                                                 IndentLevel);\r
-  getLocationType().dump("Location type", IndentLevel);\r
-  getLowerBoundId().dump("Lower bound id", IndentLevel);\r
-  getMachineType().dump("Machine type", IndentLevel);\r
-  isManagedRef().dump("Managed", IndentLevel);\r
-  getMemorySpaceKind().dump("Memory space kind", IndentLevel);\r
-  isMsilRef().dump("MSIL", IndentLevel);\r
-  getName().dump("Name", IndentLevel);\r
-  isNested().dump("Nested", IndentLevel);\r
-  hasNoInlineAttribute().dump("Has noinline declspec", IndentLevel);\r
-  hasNoReturnAttribute().dump("Has noreturn declspec", IndentLevel);\r
-  getNoStackOrdering().dump("No stack ordering", IndentLevel);\r
-  isUnreached().dump("Not reached", IndentLevel);\r
-  getNumberOfAcceleratorPointerTags().dump("Number of accelerator pointer tags",\r
-                                           IndentLevel);\r
-  getNumberOfModifiers().dump("Number of modifiers", IndentLevel);\r
-  getNumberOfRegisterIndices().dump("Number of register indices", IndentLevel);\r
-  getNumberOfRows().dump("Number of rows", IndentLevel);\r
-  getNumberOfColumns().dump("Number of columns", IndentLevel);\r
-  getObjectFileName().dump("Object file name", IndentLevel);\r
-  getOemSymbolId().dump("OEM symbol id", IndentLevel);\r
-  getOffset().dump("Offset", IndentLevel);\r
-  hasOptimizedCodeDebugInfo().dump("Optimized code debug info", IndentLevel);\r
-  hasOverloadedOperator().dump("Overloaded operator", IndentLevel);\r
-  isPacked().dump("Packed", IndentLevel);\r
-  getPlatform().dump("Platform", IndentLevel);\r
-  isPureVirtual().dump("Pure", IndentLevel);\r
-  getRank().dump("Rank", IndentLevel);\r
-  isReference().dump("Reference", IndentLevel);\r
-  getRegisterId().dump("Register ID", IndentLevel);\r
-  getRegisterType().dump("Register type", IndentLevel);\r
-  getRelativeVirtualAddress().dump("RVA", IndentLevel);\r
-  isRestrictedType().dump("Restricted type", IndentLevel);\r
-  getSamplerSlot().dump("Sampler slot", IndentLevel);\r
-  isScoped().dump("Scoped", IndentLevel);\r
-  getSignature().dump("Signature", IndentLevel);\r
-  getSizeInUdt().dump("Size in UDT", IndentLevel);\r
-  getSlot().dump("Slot", IndentLevel);\r
-  getSourceFileName().dump("Source file name", IndentLevel);\r
-  getStride().dump("Stride", IndentLevel);\r
-  getSubTypeId().dump("Sub type ID", IndentLevel);\r
-  getSymbolsFileName().dump("File name", IndentLevel);\r
-  getSymIndexId().dump("Sym index ID", IndentLevel);\r
-  getSymTag().dump("Sym tag", IndentLevel);\r
-  getTargetOffset().dump("Target offset", IndentLevel);\r
-  getTargetRelativeVirtualAddress().dump("Target RVA", IndentLevel);\r
-  getTargetSection().dump("Target section", IndentLevel);\r
-  getTargetVirtualAddress().dump("Target virtual address", IndentLevel);\r
-  getTextureSlot().dump("Texture slot", IndentLevel);\r
-  getThisAdjust().dump("This adjust", IndentLevel);\r
-  getThunkOrdinal().dump("Thunk ordinal", IndentLevel);\r
-  getTimeStamp().dump("Time stamp", IndentLevel);\r
-  getToken().dump("Token", IndentLevel);\r
-  getUavSlot().dump("UAV slot", IndentLevel);\r
-  getUdtKind().dump("UDT kind", IndentLevel);\r
-  isUnalignedType().dump("Unaligned type", IndentLevel);\r
-  getUndecoratedName().dump("Undecorated name", IndentLevel);\r
-  getUnmodifiedTypeId().dump("Unmodified type id", IndentLevel);\r
-  getUpperBoundId().dump("Upper bound id", IndentLevel);\r
-  isVirtual().dump("Virtual", IndentLevel);\r
-  getVirtualAddress().dump("Virtual address", IndentLevel);\r
-  isVirtualBaseClass().dump("Virtual base class", IndentLevel);\r
-  getVirtualBaseDispIndex().dump("Virtual base disp index", IndentLevel);\r
-  getVirtualBaseOffset().dump("Virtual base offset", IndentLevel);\r
-  getVirtualBasePointerOffset().dump("Virtual base pointer offset",\r
-                                     IndentLevel);\r
-  getVirtualTableShapeId().dump("Vtable shape ID", IndentLevel);\r
-  isVolatileType().dump("Volatile type", IndentLevel);\r
-}\r
-\r
-#if (_MSC_FULL_VER >= 180031101)\r
-DIAResult<BOOL> DIASymbol::isPGO() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isPGO);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasValidPGOCounts() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasValidPGOCounts);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isOptimizedForSpeed() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isOptimizedForSpeed);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getPGOEntryCount() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_PGOEntryCount);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getPGOEdgeCount() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_PGOEdgeCount);\r
-}\r
-\r
-DIAResult<ULONGLONG> DIASymbol::getPGODynamicInstructionCount() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_PGODynamicInstructionCount);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getStaticSize() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_staticSize);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getFinalLiveStaticSize() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_finalLiveStaticSize);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getPhaseName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_phaseName);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasControlFlowCheck() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasControlFlowCheck);\r
-}\r
-#endif\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getClassParent() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_classParent);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getType() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(&IDiaSymbol::get_type);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getArrayIndexType() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_arrayIndexType);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getVirtualTableShape() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_virtualTableShape);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getLowerBound() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_lowerBound);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getUpperBound() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_upperBound);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getObjectPointerType() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_objectPointerType);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getContainer() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_container);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getVirtualBaseTableType() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_virtualBaseTableType);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getUnmodifiedType() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_unmodifiedType);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getSubType() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_subType);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getBaseSymbol() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_baseSymbol);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getAccess() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_access);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getAddressOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_addressOffset);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getAddressSection() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_addressSection);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::getAddressTaken() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_addressTaken);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getAge() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_age);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getArrayIndexTypeId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_arrayIndexTypeId);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBackEndMajor() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_backEndMajor);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBackEndMinor() {\r
-\r
-  return InternalGetDIAValue(&IDiaSymbol::get_backEndMinor);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBackEndBuild() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_backEndBuild);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBackEndQFE() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_backEndQFE);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBaseDataOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_baseDataOffset);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBaseDataSlot() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_baseDataSlot);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBaseSymbolId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_baseSymbolId);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBaseType() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_baseType);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBitPosition() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_bitPosition);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getBuiltInKind() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_builtInKind);\r
-}\r
-\r
-DIAResult<CV_call_e> DIASymbol::getCallingConvention() {\r
-  return InternalGetDIAValue<DWORD, CV_call_e>(\r
-      &IDiaSymbol::get_callingConvention);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getClassParentId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_classParentId);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isCode() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_code);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isCompilerGenerated() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_compilerGenerated);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getCompilerName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_compilerName);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasConstructor() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_constructor);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isConstType() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_constType);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getCount() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_count);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getCountLiveRanges() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_countLiveRanges);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasCustomCallingConvention() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_customCallingConvention);\r
-}\r
-\r
-DIAResult<DataKind> DIASymbol::getDataKind() {\r
-  return InternalGetDIAValue<DWORD, DataKind>(&IDiaSymbol::get_dataKind);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isEditAndContinueEnabled() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_editAndContinueEnabled);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasFarReturn() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_farReturn);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getFrontEndMajor() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_frontEndMajor);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getFrontEndMinor() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_frontEndMinor);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getFrontEndBuild() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_frontEndBuild);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getFrontEndQFE() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_frontEndQFE);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isFunction() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_function);\r
-}\r
-\r
-DIAResult<GUID> DIASymbol::getGuid() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_guid);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasAlloca() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasAlloca);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasAssignmentOperator() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasAssignmentOperator);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasCastOperator() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasCastOperator);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasDebugInfo() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasDebugInfo);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasEH() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasEH);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasEHa() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasEHa);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasInlAsm() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasInlAsm);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasLongJump() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasLongJump);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasManagedCode() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasManagedCode);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasNestedTypes() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasNestedTypes);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasSecurityChecks() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasSecurityChecks);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasSEH() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasSEH);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasSetJump() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_hasSetJump);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isIndirectVirtualBaseClass() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_indirectVirtualBaseClass);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasInlineAttribute() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_inlSpec);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasInterruptReturn() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_interruptReturn);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isBaseVirtualFunction() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_intro);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isIntrinsic() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_intrinsic);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isAcceleratorGroupSharedLocal() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isAcceleratorGroupSharedLocal);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isAcceleratorPointerTagLiveRange() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isAcceleratorPointerTagLiveRange);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isAcceleratorStubFunction() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isAcceleratorStubFunction);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isAggregated() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isAggregated);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isConstructorVirtualBase() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isConstructorVirtualBase);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasStrictGSCheck() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_strictGSCheck);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isLocationControlFlowDependent() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isLocationControlFlowDependent);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasCTypes() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isCTypes);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isCVTCIL() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isCVTCIL);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isDataAligned() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isDataAligned);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isHLSLData() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isHLSLData);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isHotpatchable() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isHotpatchable);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isLTCG() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isLTCG);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isMatrixRowMajor() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isMatrixRowMajor);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isMSILNetmodule() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isMSILNetmodule);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isMultipleInheritance() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isMultipleInheritance);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isNaked() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isNaked);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isOptimizedAway() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isOptimizedAway);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isPointerBasedOnSymbolValue() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isPointerBasedOnSymbolValue);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isPointerToDataMember() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isPointerToDataMember);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isPointerToMemberFunction() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isPointerToMemberFunction);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isReturnValue() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isReturnValue);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isSdl() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isSdl);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isSingleInheritance() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isSingleInheritance);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isSplitted() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isSplitted);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isStatic() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isStatic);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isStripped() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isStripped);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isVirtualInheritance() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isVirtualInheritance);\r
-}\r
-\r
-DIAResult<CV_CFL_LANG> DIASymbol::getLanguage() {\r
-  return InternalGetDIAValue<DWORD, CV_CFL_LANG>(&IDiaSymbol::get_language);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isSafeBuffers() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isSafeBuffers);\r
-}\r
-\r
-DIAResult<ULONGLONG> DIASymbol::getLength() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_length);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getLexicalParentId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_lexicalParentId);\r
-}\r
-\r
-DIAResult<DiaSymbolPtr> DIASymbol::getLexicalParent() {\r
-  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(\r
-      &IDiaSymbol::get_lexicalParent);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getLocalBasePointerRegisterId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_localBasePointerRegisterId);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getLibraryName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_libraryName);\r
-}\r
-\r
-DIAResult<ULONGLONG> DIASymbol::getLiveRangeLength() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_liveRangeLength);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getLiveRangeStartAddressSection() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_liveRangeStartAddressSection);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getLiveRangeStartAddressOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_liveRangeStartAddressOffset);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getLiveRangeStartRelativeVirtualAddress() {\r
-  return InternalGetDIAValue(\r
-      &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);\r
-}\r
-\r
-DIAResult<LocationType> DIASymbol::getLocationType() {\r
-  return InternalGetDIAValue<DWORD, LocationType>(\r
-      &IDiaSymbol::get_locationType);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getLowerBoundId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_lowerBoundId);\r
-}\r
-\r
-DIAResult<MachineTypeEnum> DIASymbol::getMachineType() {\r
-  return InternalGetDIAValue<DWORD, MachineTypeEnum>(\r
-      &IDiaSymbol::get_machineType);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isManagedRef() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_managed);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getMemorySpaceKind() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_memorySpaceKind);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isMsilRef() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_msil);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_name);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isNested() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_nested);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasNoInlineAttribute() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_noInline);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasNoReturnAttribute() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_noReturn);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::getNoStackOrdering() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_noStackOrdering);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isUnreached() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_notReached);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getNumberOfAcceleratorPointerTags() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_numberOfAcceleratorPointerTags);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getNumberOfModifiers() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_numberOfModifiers);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getNumberOfRegisterIndices() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_numberOfRegisterIndices);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getNumberOfRows() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_numberOfRows);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getNumberOfColumns() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_numberOfColumns);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getObjectFileName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_objectFileName);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getOemSymbolId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_oemSymbolId);\r
-}\r
-\r
-DIAResult<LONG> DIASymbol::getOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_offset);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getOffsetInUdt() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_offsetInUdt);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasOptimizedCodeDebugInfo() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_optimizedCodeDebugInfo);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::hasOverloadedOperator() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_overloadedOperator);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isPacked() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_packed);\r
-}\r
-\r
-DIAResult<CV_CPU_TYPE_e> DIASymbol::getPlatform() {\r
-  return InternalGetDIAValue<DWORD, CV_CPU_TYPE_e>(&IDiaSymbol::get_platform);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isPureVirtual() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_pure);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getRank() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_rank);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isReference() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_reference);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isRValueReference() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_RValueReference);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getRegisterId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_registerId);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getRegisterType() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_registerType);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getRelativeVirtualAddress() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_relativeVirtualAddress);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isRestrictedType() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_restrictedType);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getSamplerSlot() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_samplerSlot);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isScoped() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_scoped);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isRefUdt() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isRefUdt);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isValueUdt() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isValueUdt);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isInterfaceUdt() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isInterfaceUdt);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isCxxReturnUdt() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_isCxxReturnUdt);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getSignature() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_signature);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getSizeInUdt() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_sizeInUdt);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getSlot() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_slot);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getSourceFileName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_sourceFileName);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getStride() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_stride);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getSubTypeId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_subTypeId);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getSymbolsFileName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_symbolsFileName);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getSymIndexId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_symIndexId);\r
-}\r
-\r
-DIAResult<DiaSymTagEnum> DIASymbol::getSymTag() {\r
-  return InternalGetDIAValue<DWORD, DiaSymTagEnum>(&IDiaSymbol::get_symTag);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getTargetOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_targetOffset);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getTargetRelativeVirtualAddress() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_targetRelativeVirtualAddress);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getTargetSection() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_targetSection);\r
-}\r
-\r
-DIAResult<ULONGLONG> DIASymbol::getTargetVirtualAddress() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_targetVirtualAddress);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getTextureSlot() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_textureSlot);\r
-}\r
-\r
-DIAResult<LONG> DIASymbol::getThisAdjust() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_thisAdjust);\r
-}\r
-\r
-DIAResult<THUNK_ORDINAL> DIASymbol::getThunkOrdinal() {\r
-  return InternalGetDIAValue<DWORD, THUNK_ORDINAL>(\r
-      &IDiaSymbol::get_thunkOrdinal);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getTimeStamp() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_timeStamp);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getToken() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_token);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getUavSlot() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_uavSlot);\r
-}\r
-\r
-DIAResult<UdtKind> DIASymbol::getUdtKind() {\r
-  return InternalGetDIAValue<DWORD, UdtKind>(&IDiaSymbol::get_udtKind);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isUnalignedType() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_unalignedType);\r
-}\r
-\r
-DIAResult<DIAString> DIASymbol::getUndecoratedName() {\r
-  return InternalGetDIAStringValue(&IDiaSymbol::get_undecoratedName);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getUnmodifiedTypeId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_unmodifiedTypeId);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getUpperBoundId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_upperBoundId);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isVirtual() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtual);\r
-}\r
-\r
-DIAResult<ULONGLONG> DIASymbol::getVirtualAddress() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtualAddress);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isVirtualBaseClass() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtualBaseClass);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getVirtualBaseDispIndex() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtualBaseDispIndex);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getVirtualBaseOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtualBaseOffset);\r
-}\r
-\r
-DIAResult<LONG> DIASymbol::getVirtualBasePointerOffset() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtualBasePointerOffset);\r
-}\r
-\r
-DIAResult<DWORD> DIASymbol::getVirtualTableShapeId() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_virtualTableShapeId);\r
-}\r
-\r
-DIAResult<BOOL> DIASymbol::isVolatileType() {\r
-  return InternalGetDIAValue(&IDiaSymbol::get_volatileType);\r
-}\r
+//===- DIASymbol.cpp - Dump debug info from a PDB file ----------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm-pdbdump.h"
+#include "DIASymbol.h"
+
+using namespace llvm::sys::windows;
+
+DIASymbol::DIASymbol(IDiaSymbol *DiaSymbol) : Symbol(DiaSymbol) {
+  Symbol->AddRef();
+}
+
+DIASymbol::~DIASymbol() { Symbol->Release(); }
+
+void DIASymbol::fullDump(int IndentLevel) {
+  getLexicalParent().dump("Lexical parent", IndentLevel);
+  getClassParent().dump("Class parent", IndentLevel);
+  getType().dump("Type", IndentLevel);
+  getArrayIndexType().dump("Array index type", IndentLevel);
+  getVirtualTableShape().dump("Vtable shape", IndentLevel);
+  getLowerBound().dump("Lower bound", IndentLevel);
+  getUpperBound().dump("Upper bound", IndentLevel);
+  getObjectPointerType().dump("Object pointer type", IndentLevel);
+  getContainer().dump("Container", IndentLevel);
+  getVirtualBaseTableType().dump("Virtual base table type", IndentLevel);
+  getUnmodifiedType().dump("Unmodified type", IndentLevel);
+  getSubType().dump("Sub type", IndentLevel);
+  getBaseSymbol().dump("Base symbol", IndentLevel);
+
+#if (_MSC_FULL_VER >= 180031101)
+  // These methods are only available on VS 2013 SP4 and higher.
+  isPGO().dump("Is PGO", IndentLevel);
+  hasValidPGOCounts().dump("Has valid PGO counts", IndentLevel);
+  isOptimizedForSpeed().dump("Is optimized for speed", IndentLevel);
+  getPGOEntryCount().dump("PGO entry count", IndentLevel);
+  getPGOEdgeCount().dump("PGO edge count", IndentLevel);
+  getPGODynamicInstructionCount().dump("PGO dynamic instruction count",
+                                       IndentLevel);
+  getStaticSize().dump("Static size", IndentLevel);
+  getFinalLiveStaticSize().dump("Final live static size", IndentLevel);
+  getPhaseName().dump("Phase name", IndentLevel);
+  hasControlFlowCheck().dump("Has control flow check", IndentLevel);
+#endif
+
+  getAccess().dump("Access", IndentLevel);
+  getAddressOffset().dump("Address Offset", IndentLevel);
+  getAddressSection().dump("Address Section", IndentLevel);
+  getAddressTaken().dump("Address Taken", IndentLevel);
+  getAge().dump("Age", IndentLevel);
+  getArrayIndexTypeId().dump("Array Index Type Id", IndentLevel);
+  getBackEndMajor().dump("Back End Major", IndentLevel);
+  getBackEndMinor().dump("Back End Minor", IndentLevel);
+  getBackEndBuild().dump("Back End Build", IndentLevel);
+  getBaseDataOffset().dump("Base Data Offset", IndentLevel);
+  getBaseDataSlot().dump("Base Data Slot", IndentLevel);
+  getBaseSymbolId().dump("Base Symbol Id", IndentLevel);
+  getBaseType().dump("Base Type", IndentLevel);
+  getBitPosition().dump("Bit Position", IndentLevel);
+  getBuiltInKind().dump("Built In Kind", IndentLevel);
+  getCallingConvention().dump("Calling Convention", IndentLevel);
+  getClassParentId().dump("Class Parent Id", IndentLevel);
+  isCode().dump("Code", IndentLevel);
+  isCompilerGenerated().dump("Compiler Generated", IndentLevel);
+  getCompilerName().dump("Compiler Name", IndentLevel);
+  hasConstructor().dump("Constructor", IndentLevel);
+  isConstType().dump("Const Type", IndentLevel);
+  getCount().dump("Count", IndentLevel);
+  getCountLiveRanges().dump("Count Live Ranges", IndentLevel);
+  hasCustomCallingConvention().dump("Custom Calling Convention", IndentLevel);
+  getDataKind().dump("Data Kind", IndentLevel);
+  isEditAndContinueEnabled().dump("Edit and Continue Enabled", IndentLevel);
+  hasFarReturn().dump("Far Return", IndentLevel);
+  getFrontEndMajor().dump("Front End Major", IndentLevel);
+  getFrontEndMinor().dump("Front End Minor", IndentLevel);
+  getFrontEndBuild().dump("Front End Build", IndentLevel);
+  isFunction().dump("Function", IndentLevel);
+  getGuid().dump("GUID", IndentLevel);
+  hasAlloca().dump("Has Alloca", IndentLevel);
+  hasAssignmentOperator().dump("Has Assignment Operator", IndentLevel);
+  hasCastOperator().dump("Has Cast Operator", IndentLevel);
+  hasDebugInfo().dump("Has Debug Info", IndentLevel);
+  hasEH().dump("Has EH", IndentLevel);
+  hasEHa().dump("Has EHa", IndentLevel);
+  hasInlAsm().dump("Has Inline Asm", IndentLevel);
+  hasLongJump().dump("Has longjmp", IndentLevel);
+  hasManagedCode().dump("Has Managed Code", IndentLevel);
+  hasNestedTypes().dump("Has Nested Types", IndentLevel);
+  hasSecurityChecks().dump("Has Security Checks", IndentLevel);
+  hasSEH().dump("Has SEH", IndentLevel);
+  hasSetJump().dump("Has setjmp", IndentLevel);
+  isIndirectVirtualBaseClass().dump("Is indirect virtual base", IndentLevel);
+  hasInlineAttribute().dump("Has inline declspec", IndentLevel);
+  hasInterruptReturn().dump("Has interrupt return", IndentLevel);
+  isBaseVirtualFunction().dump("Is base virtual function", IndentLevel);
+  isAcceleratorGroupSharedLocal().dump("Is Accelerator Group Shared Local",
+                                       IndentLevel);
+  isAcceleratorPointerTagLiveRange().dump(
+      "Is Accelerator Pointer Tag Live Range", IndentLevel);
+  isAcceleratorStubFunction().dump("Is Accelerator Stub Function", IndentLevel);
+  isAggregated().dump("Is aggregated", IndentLevel);
+  hasCTypes().dump("Has C types", IndentLevel);
+  isCVTCIL().dump("Was converted from MSIL", IndentLevel);
+  isDataAligned().dump("Is data aligned", IndentLevel);
+  isHLSLData().dump("Is HLSL data", IndentLevel);
+  isHotpatchable().dump("Is hot-patchable", IndentLevel);
+  isLTCG().dump("Is LTCG", IndentLevel);
+  isMatrixRowMajor().dump("Is matrix row major", IndentLevel);
+  isMSILNetmodule().dump("Is MSIL .netmodule", IndentLevel);
+  isMultipleInheritance().dump("Is multiple inheritance", IndentLevel);
+  isNaked().dump("Is naked", IndentLevel);
+  isOptimizedAway().dump("Is optimized away", IndentLevel);
+  isPointerBasedOnSymbolValue().dump("Is pointer based on symbol value",
+                                     IndentLevel);
+  isPointerToDataMember().dump("Is pointer to data member", IndentLevel);
+  isPointerToMemberFunction().dump("Is pointer to member function",
+                                   IndentLevel);
+  isReturnValue().dump("Is return value", IndentLevel);
+  isSdl().dump("Is SDL", IndentLevel);
+  isSingleInheritance().dump("Is single inheritance", IndentLevel);
+  isSplitted().dump("Is splitted", IndentLevel);
+  isStatic().dump("Is staic", IndentLevel);
+  isStripped().dump("Is stripped", IndentLevel);
+  isVirtualInheritance().dump("Is virtual inheritance", IndentLevel);
+  getLanguage().dump("Language", IndentLevel);
+  getLength().dump("Length", IndentLevel);
+  getLexicalParentId().dump("Lexical parent id", IndentLevel);
+  getLibraryName().dump("Library name", IndentLevel);
+  getLiveRangeLength().dump("Live range length", IndentLevel);
+  getLiveRangeStartAddressSection().dump("Live range start address section",
+                                         IndentLevel);
+  getLiveRangeStartAddressOffset().dump("Live range start address offset",
+                                        IndentLevel);
+  getLiveRangeStartRelativeVirtualAddress().dump("Live range start address RVA",
+                                                 IndentLevel);
+  getLocationType().dump("Location type", IndentLevel);
+  getLowerBoundId().dump("Lower bound id", IndentLevel);
+  getMachineType().dump("Machine type", IndentLevel);
+  isManagedRef().dump("Managed", IndentLevel);
+  getMemorySpaceKind().dump("Memory space kind", IndentLevel);
+  isMsilRef().dump("MSIL", IndentLevel);
+  getName().dump("Name", IndentLevel);
+  isNested().dump("Nested", IndentLevel);
+  hasNoInlineAttribute().dump("Has noinline declspec", IndentLevel);
+  hasNoReturnAttribute().dump("Has noreturn declspec", IndentLevel);
+  getNoStackOrdering().dump("No stack ordering", IndentLevel);
+  isUnreached().dump("Not reached", IndentLevel);
+  getNumberOfAcceleratorPointerTags().dump("Number of accelerator pointer tags",
+                                           IndentLevel);
+  getNumberOfModifiers().dump("Number of modifiers", IndentLevel);
+  getNumberOfRegisterIndices().dump("Number of register indices", IndentLevel);
+  getNumberOfRows().dump("Number of rows", IndentLevel);
+  getNumberOfColumns().dump("Number of columns", IndentLevel);
+  getObjectFileName().dump("Object file name", IndentLevel);
+  getOemSymbolId().dump("OEM symbol id", IndentLevel);
+  getOffset().dump("Offset", IndentLevel);
+  hasOptimizedCodeDebugInfo().dump("Optimized code debug info", IndentLevel);
+  hasOverloadedOperator().dump("Overloaded operator", IndentLevel);
+  isPacked().dump("Packed", IndentLevel);
+  getPlatform().dump("Platform", IndentLevel);
+  isPureVirtual().dump("Pure", IndentLevel);
+  getRank().dump("Rank", IndentLevel);
+  isReference().dump("Reference", IndentLevel);
+  getRegisterId().dump("Register ID", IndentLevel);
+  getRegisterType().dump("Register type", IndentLevel);
+  getRelativeVirtualAddress().dump("RVA", IndentLevel);
+  isRestrictedType().dump("Restricted type", IndentLevel);
+  getSamplerSlot().dump("Sampler slot", IndentLevel);
+  isScoped().dump("Scoped", IndentLevel);
+  getSignature().dump("Signature", IndentLevel);
+  getSizeInUdt().dump("Size in UDT", IndentLevel);
+  getSlot().dump("Slot", IndentLevel);
+  getSourceFileName().dump("Source file name", IndentLevel);
+  getStride().dump("Stride", IndentLevel);
+  getSubTypeId().dump("Sub type ID", IndentLevel);
+  getSymbolsFileName().dump("File name", IndentLevel);
+  getSymIndexId().dump("Sym index ID", IndentLevel);
+  getSymTag().dump("Sym tag", IndentLevel);
+  getTargetOffset().dump("Target offset", IndentLevel);
+  getTargetRelativeVirtualAddress().dump("Target RVA", IndentLevel);
+  getTargetSection().dump("Target section", IndentLevel);
+  getTargetVirtualAddress().dump("Target virtual address", IndentLevel);
+  getTextureSlot().dump("Texture slot", IndentLevel);
+  getThisAdjust().dump("This adjust", IndentLevel);
+  getThunkOrdinal().dump("Thunk ordinal", IndentLevel);
+  getTimeStamp().dump("Time stamp", IndentLevel);
+  getToken().dump("Token", IndentLevel);
+  getUavSlot().dump("UAV slot", IndentLevel);
+  getUdtKind().dump("UDT kind", IndentLevel);
+  isUnalignedType().dump("Unaligned type", IndentLevel);
+  getUndecoratedName().dump("Undecorated name", IndentLevel);
+  getUnmodifiedTypeId().dump("Unmodified type id", IndentLevel);
+  getUpperBoundId().dump("Upper bound id", IndentLevel);
+  isVirtual().dump("Virtual", IndentLevel);
+  getVirtualAddress().dump("Virtual address", IndentLevel);
+  isVirtualBaseClass().dump("Virtual base class", IndentLevel);
+  getVirtualBaseDispIndex().dump("Virtual base disp index", IndentLevel);
+  getVirtualBaseOffset().dump("Virtual base offset", IndentLevel);
+  getVirtualBasePointerOffset().dump("Virtual base pointer offset",
+                                     IndentLevel);
+  getVirtualTableShapeId().dump("Vtable shape ID", IndentLevel);
+  isVolatileType().dump("Volatile type", IndentLevel);
+}
+
+#if (_MSC_FULL_VER >= 180031101)
+DIAResult<BOOL> DIASymbol::isPGO() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isPGO);
+}
+
+DIAResult<BOOL> DIASymbol::hasValidPGOCounts() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasValidPGOCounts);
+}
+
+DIAResult<BOOL> DIASymbol::isOptimizedForSpeed() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isOptimizedForSpeed);
+}
+
+DIAResult<DWORD> DIASymbol::getPGOEntryCount() {
+  return InternalGetDIAValue(&IDiaSymbol::get_PGOEntryCount);
+}
+
+DIAResult<DWORD> DIASymbol::getPGOEdgeCount() {
+  return InternalGetDIAValue(&IDiaSymbol::get_PGOEdgeCount);
+}
+
+DIAResult<ULONGLONG> DIASymbol::getPGODynamicInstructionCount() {
+  return InternalGetDIAValue(&IDiaSymbol::get_PGODynamicInstructionCount);
+}
+
+DIAResult<DWORD> DIASymbol::getStaticSize() {
+  return InternalGetDIAValue(&IDiaSymbol::get_staticSize);
+}
+
+DIAResult<DWORD> DIASymbol::getFinalLiveStaticSize() {
+  return InternalGetDIAValue(&IDiaSymbol::get_finalLiveStaticSize);
+}
+
+DIAResult<DIAString> DIASymbol::getPhaseName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_phaseName);
+}
+
+DIAResult<BOOL> DIASymbol::hasControlFlowCheck() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasControlFlowCheck);
+}
+#endif
+
+DIAResult<DiaSymbolPtr> DIASymbol::getClassParent() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_classParent);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getType() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(&IDiaSymbol::get_type);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getArrayIndexType() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_arrayIndexType);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getVirtualTableShape() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_virtualTableShape);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getLowerBound() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_lowerBound);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getUpperBound() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_upperBound);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getObjectPointerType() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_objectPointerType);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getContainer() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_container);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getVirtualBaseTableType() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_virtualBaseTableType);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getUnmodifiedType() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_unmodifiedType);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getSubType() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_subType);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getBaseSymbol() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_baseSymbol);
+}
+
+DIAResult<DWORD> DIASymbol::getAccess() {
+  return InternalGetDIAValue(&IDiaSymbol::get_access);
+}
+
+DIAResult<DWORD> DIASymbol::getAddressOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_addressOffset);
+}
+
+DIAResult<DWORD> DIASymbol::getAddressSection() {
+  return InternalGetDIAValue(&IDiaSymbol::get_addressSection);
+}
+
+DIAResult<BOOL> DIASymbol::getAddressTaken() {
+  return InternalGetDIAValue(&IDiaSymbol::get_addressTaken);
+}
+
+DIAResult<DWORD> DIASymbol::getAge() {
+  return InternalGetDIAValue(&IDiaSymbol::get_age);
+}
+
+DIAResult<DWORD> DIASymbol::getArrayIndexTypeId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_arrayIndexTypeId);
+}
+
+DIAResult<DWORD> DIASymbol::getBackEndMajor() {
+  return InternalGetDIAValue(&IDiaSymbol::get_backEndMajor);
+}
+
+DIAResult<DWORD> DIASymbol::getBackEndMinor() {
+
+  return InternalGetDIAValue(&IDiaSymbol::get_backEndMinor);
+}
+
+DIAResult<DWORD> DIASymbol::getBackEndBuild() {
+  return InternalGetDIAValue(&IDiaSymbol::get_backEndBuild);
+}
+
+DIAResult<DWORD> DIASymbol::getBackEndQFE() {
+  return InternalGetDIAValue(&IDiaSymbol::get_backEndQFE);
+}
+
+DIAResult<DWORD> DIASymbol::getBaseDataOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_baseDataOffset);
+}
+
+DIAResult<DWORD> DIASymbol::getBaseDataSlot() {
+  return InternalGetDIAValue(&IDiaSymbol::get_baseDataSlot);
+}
+
+DIAResult<DWORD> DIASymbol::getBaseSymbolId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_baseSymbolId);
+}
+
+DIAResult<DWORD> DIASymbol::getBaseType() {
+  return InternalGetDIAValue(&IDiaSymbol::get_baseType);
+}
+
+DIAResult<DWORD> DIASymbol::getBitPosition() {
+  return InternalGetDIAValue(&IDiaSymbol::get_bitPosition);
+}
+
+DIAResult<DWORD> DIASymbol::getBuiltInKind() {
+  return InternalGetDIAValue(&IDiaSymbol::get_builtInKind);
+}
+
+DIAResult<CV_call_e> DIASymbol::getCallingConvention() {
+  return InternalGetDIAValue<DWORD, CV_call_e>(
+      &IDiaSymbol::get_callingConvention);
+}
+
+DIAResult<DWORD> DIASymbol::getClassParentId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_classParentId);
+}
+
+DIAResult<BOOL> DIASymbol::isCode() {
+  return InternalGetDIAValue(&IDiaSymbol::get_code);
+}
+
+DIAResult<BOOL> DIASymbol::isCompilerGenerated() {
+  return InternalGetDIAValue(&IDiaSymbol::get_compilerGenerated);
+}
+
+DIAResult<DIAString> DIASymbol::getCompilerName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_compilerName);
+}
+
+DIAResult<BOOL> DIASymbol::hasConstructor() {
+  return InternalGetDIAValue(&IDiaSymbol::get_constructor);
+}
+
+DIAResult<BOOL> DIASymbol::isConstType() {
+  return InternalGetDIAValue(&IDiaSymbol::get_constType);
+}
+
+DIAResult<DWORD> DIASymbol::getCount() {
+  return InternalGetDIAValue(&IDiaSymbol::get_count);
+}
+
+DIAResult<DWORD> DIASymbol::getCountLiveRanges() {
+  return InternalGetDIAValue(&IDiaSymbol::get_countLiveRanges);
+}
+
+DIAResult<BOOL> DIASymbol::hasCustomCallingConvention() {
+  return InternalGetDIAValue(&IDiaSymbol::get_customCallingConvention);
+}
+
+DIAResult<DataKind> DIASymbol::getDataKind() {
+  return InternalGetDIAValue<DWORD, DataKind>(&IDiaSymbol::get_dataKind);
+}
+
+DIAResult<BOOL> DIASymbol::isEditAndContinueEnabled() {
+  return InternalGetDIAValue(&IDiaSymbol::get_editAndContinueEnabled);
+}
+
+DIAResult<BOOL> DIASymbol::hasFarReturn() {
+  return InternalGetDIAValue(&IDiaSymbol::get_farReturn);
+}
+
+DIAResult<DWORD> DIASymbol::getFrontEndMajor() {
+  return InternalGetDIAValue(&IDiaSymbol::get_frontEndMajor);
+}
+
+DIAResult<DWORD> DIASymbol::getFrontEndMinor() {
+  return InternalGetDIAValue(&IDiaSymbol::get_frontEndMinor);
+}
+
+DIAResult<DWORD> DIASymbol::getFrontEndBuild() {
+  return InternalGetDIAValue(&IDiaSymbol::get_frontEndBuild);
+}
+
+DIAResult<DWORD> DIASymbol::getFrontEndQFE() {
+  return InternalGetDIAValue(&IDiaSymbol::get_frontEndQFE);
+}
+
+DIAResult<BOOL> DIASymbol::isFunction() {
+  return InternalGetDIAValue(&IDiaSymbol::get_function);
+}
+
+DIAResult<GUID> DIASymbol::getGuid() {
+  return InternalGetDIAValue(&IDiaSymbol::get_guid);
+}
+
+DIAResult<BOOL> DIASymbol::hasAlloca() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasAlloca);
+}
+
+DIAResult<BOOL> DIASymbol::hasAssignmentOperator() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasAssignmentOperator);
+}
+
+DIAResult<BOOL> DIASymbol::hasCastOperator() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasCastOperator);
+}
+
+DIAResult<BOOL> DIASymbol::hasDebugInfo() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasDebugInfo);
+}
+
+DIAResult<BOOL> DIASymbol::hasEH() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasEH);
+}
+
+DIAResult<BOOL> DIASymbol::hasEHa() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasEHa);
+}
+
+DIAResult<BOOL> DIASymbol::hasInlAsm() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasInlAsm);
+}
+
+DIAResult<BOOL> DIASymbol::hasLongJump() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasLongJump);
+}
+
+DIAResult<BOOL> DIASymbol::hasManagedCode() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasManagedCode);
+}
+
+DIAResult<BOOL> DIASymbol::hasNestedTypes() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasNestedTypes);
+}
+
+DIAResult<BOOL> DIASymbol::hasSecurityChecks() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasSecurityChecks);
+}
+
+DIAResult<BOOL> DIASymbol::hasSEH() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasSEH);
+}
+
+DIAResult<BOOL> DIASymbol::hasSetJump() {
+  return InternalGetDIAValue(&IDiaSymbol::get_hasSetJump);
+}
+
+DIAResult<BOOL> DIASymbol::isIndirectVirtualBaseClass() {
+  return InternalGetDIAValue(&IDiaSymbol::get_indirectVirtualBaseClass);
+}
+
+DIAResult<BOOL> DIASymbol::hasInlineAttribute() {
+  return InternalGetDIAValue(&IDiaSymbol::get_inlSpec);
+}
+
+DIAResult<BOOL> DIASymbol::hasInterruptReturn() {
+  return InternalGetDIAValue(&IDiaSymbol::get_interruptReturn);
+}
+
+DIAResult<BOOL> DIASymbol::isBaseVirtualFunction() {
+  return InternalGetDIAValue(&IDiaSymbol::get_intro);
+}
+
+DIAResult<BOOL> DIASymbol::isIntrinsic() {
+  return InternalGetDIAValue(&IDiaSymbol::get_intrinsic);
+}
+
+DIAResult<BOOL> DIASymbol::isAcceleratorGroupSharedLocal() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isAcceleratorGroupSharedLocal);
+}
+
+DIAResult<BOOL> DIASymbol::isAcceleratorPointerTagLiveRange() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isAcceleratorPointerTagLiveRange);
+}
+
+DIAResult<BOOL> DIASymbol::isAcceleratorStubFunction() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isAcceleratorStubFunction);
+}
+
+DIAResult<BOOL> DIASymbol::isAggregated() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isAggregated);
+}
+
+DIAResult<BOOL> DIASymbol::isConstructorVirtualBase() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isConstructorVirtualBase);
+}
+
+DIAResult<BOOL> DIASymbol::hasStrictGSCheck() {
+  return InternalGetDIAValue(&IDiaSymbol::get_strictGSCheck);
+}
+
+DIAResult<BOOL> DIASymbol::isLocationControlFlowDependent() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isLocationControlFlowDependent);
+}
+
+DIAResult<BOOL> DIASymbol::hasCTypes() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isCTypes);
+}
+
+DIAResult<BOOL> DIASymbol::isCVTCIL() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isCVTCIL);
+}
+
+DIAResult<BOOL> DIASymbol::isDataAligned() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isDataAligned);
+}
+
+DIAResult<BOOL> DIASymbol::isHLSLData() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isHLSLData);
+}
+
+DIAResult<BOOL> DIASymbol::isHotpatchable() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isHotpatchable);
+}
+
+DIAResult<BOOL> DIASymbol::isLTCG() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isLTCG);
+}
+
+DIAResult<BOOL> DIASymbol::isMatrixRowMajor() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isMatrixRowMajor);
+}
+
+DIAResult<BOOL> DIASymbol::isMSILNetmodule() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isMSILNetmodule);
+}
+
+DIAResult<BOOL> DIASymbol::isMultipleInheritance() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isMultipleInheritance);
+}
+
+DIAResult<BOOL> DIASymbol::isNaked() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isNaked);
+}
+
+DIAResult<BOOL> DIASymbol::isOptimizedAway() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isOptimizedAway);
+}
+
+DIAResult<BOOL> DIASymbol::isPointerBasedOnSymbolValue() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isPointerBasedOnSymbolValue);
+}
+
+DIAResult<BOOL> DIASymbol::isPointerToDataMember() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isPointerToDataMember);
+}
+
+DIAResult<BOOL> DIASymbol::isPointerToMemberFunction() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isPointerToMemberFunction);
+}
+
+DIAResult<BOOL> DIASymbol::isReturnValue() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isReturnValue);
+}
+
+DIAResult<BOOL> DIASymbol::isSdl() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isSdl);
+}
+
+DIAResult<BOOL> DIASymbol::isSingleInheritance() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isSingleInheritance);
+}
+
+DIAResult<BOOL> DIASymbol::isSplitted() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isSplitted);
+}
+
+DIAResult<BOOL> DIASymbol::isStatic() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isStatic);
+}
+
+DIAResult<BOOL> DIASymbol::isStripped() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isStripped);
+}
+
+DIAResult<BOOL> DIASymbol::isVirtualInheritance() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isVirtualInheritance);
+}
+
+DIAResult<CV_CFL_LANG> DIASymbol::getLanguage() {
+  return InternalGetDIAValue<DWORD, CV_CFL_LANG>(&IDiaSymbol::get_language);
+}
+
+DIAResult<BOOL> DIASymbol::isSafeBuffers() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isSafeBuffers);
+}
+
+DIAResult<ULONGLONG> DIASymbol::getLength() {
+  return InternalGetDIAValue(&IDiaSymbol::get_length);
+}
+
+DIAResult<DWORD> DIASymbol::getLexicalParentId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_lexicalParentId);
+}
+
+DIAResult<DiaSymbolPtr> DIASymbol::getLexicalParent() {
+  return InternalGetDIAValue<IDiaSymbol *, DiaSymbolPtr>(
+      &IDiaSymbol::get_lexicalParent);
+}
+
+DIAResult<DWORD> DIASymbol::getLocalBasePointerRegisterId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_localBasePointerRegisterId);
+}
+
+DIAResult<DIAString> DIASymbol::getLibraryName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_libraryName);
+}
+
+DIAResult<ULONGLONG> DIASymbol::getLiveRangeLength() {
+  return InternalGetDIAValue(&IDiaSymbol::get_liveRangeLength);
+}
+
+DIAResult<DWORD> DIASymbol::getLiveRangeStartAddressSection() {
+  return InternalGetDIAValue(&IDiaSymbol::get_liveRangeStartAddressSection);
+}
+
+DIAResult<DWORD> DIASymbol::getLiveRangeStartAddressOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_liveRangeStartAddressOffset);
+}
+
+DIAResult<DWORD> DIASymbol::getLiveRangeStartRelativeVirtualAddress() {
+  return InternalGetDIAValue(
+      &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);
+}
+
+DIAResult<LocationType> DIASymbol::getLocationType() {
+  return InternalGetDIAValue<DWORD, LocationType>(
+      &IDiaSymbol::get_locationType);
+}
+
+DIAResult<DWORD> DIASymbol::getLowerBoundId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_lowerBoundId);
+}
+
+DIAResult<MachineTypeEnum> DIASymbol::getMachineType() {
+  return InternalGetDIAValue<DWORD, MachineTypeEnum>(
+      &IDiaSymbol::get_machineType);
+}
+
+DIAResult<BOOL> DIASymbol::isManagedRef() {
+  return InternalGetDIAValue(&IDiaSymbol::get_managed);
+}
+
+DIAResult<DWORD> DIASymbol::getMemorySpaceKind() {
+  return InternalGetDIAValue(&IDiaSymbol::get_memorySpaceKind);
+}
+
+DIAResult<BOOL> DIASymbol::isMsilRef() {
+  return InternalGetDIAValue(&IDiaSymbol::get_msil);
+}
+
+DIAResult<DIAString> DIASymbol::getName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_name);
+}
+
+DIAResult<BOOL> DIASymbol::isNested() {
+  return InternalGetDIAValue(&IDiaSymbol::get_nested);
+}
+
+DIAResult<BOOL> DIASymbol::hasNoInlineAttribute() {
+  return InternalGetDIAValue(&IDiaSymbol::get_noInline);
+}
+
+DIAResult<BOOL> DIASymbol::hasNoReturnAttribute() {
+  return InternalGetDIAValue(&IDiaSymbol::get_noReturn);
+}
+
+DIAResult<BOOL> DIASymbol::getNoStackOrdering() {
+  return InternalGetDIAValue(&IDiaSymbol::get_noStackOrdering);
+}
+
+DIAResult<BOOL> DIASymbol::isUnreached() {
+  return InternalGetDIAValue(&IDiaSymbol::get_notReached);
+}
+
+DIAResult<DWORD> DIASymbol::getNumberOfAcceleratorPointerTags() {
+  return InternalGetDIAValue(&IDiaSymbol::get_numberOfAcceleratorPointerTags);
+}
+
+DIAResult<DWORD> DIASymbol::getNumberOfModifiers() {
+  return InternalGetDIAValue(&IDiaSymbol::get_numberOfModifiers);
+}
+
+DIAResult<DWORD> DIASymbol::getNumberOfRegisterIndices() {
+  return InternalGetDIAValue(&IDiaSymbol::get_numberOfRegisterIndices);
+}
+
+DIAResult<DWORD> DIASymbol::getNumberOfRows() {
+  return InternalGetDIAValue(&IDiaSymbol::get_numberOfRows);
+}
+
+DIAResult<DWORD> DIASymbol::getNumberOfColumns() {
+  return InternalGetDIAValue(&IDiaSymbol::get_numberOfColumns);
+}
+
+DIAResult<DIAString> DIASymbol::getObjectFileName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_objectFileName);
+}
+
+DIAResult<DWORD> DIASymbol::getOemSymbolId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_oemSymbolId);
+}
+
+DIAResult<LONG> DIASymbol::getOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_offset);
+}
+
+DIAResult<DWORD> DIASymbol::getOffsetInUdt() {
+  return InternalGetDIAValue(&IDiaSymbol::get_offsetInUdt);
+}
+
+DIAResult<BOOL> DIASymbol::hasOptimizedCodeDebugInfo() {
+  return InternalGetDIAValue(&IDiaSymbol::get_optimizedCodeDebugInfo);
+}
+
+DIAResult<BOOL> DIASymbol::hasOverloadedOperator() {
+  return InternalGetDIAValue(&IDiaSymbol::get_overloadedOperator);
+}
+
+DIAResult<BOOL> DIASymbol::isPacked() {
+  return InternalGetDIAValue(&IDiaSymbol::get_packed);
+}
+
+DIAResult<CV_CPU_TYPE_e> DIASymbol::getPlatform() {
+  return InternalGetDIAValue<DWORD, CV_CPU_TYPE_e>(&IDiaSymbol::get_platform);
+}
+
+DIAResult<BOOL> DIASymbol::isPureVirtual() {
+  return InternalGetDIAValue(&IDiaSymbol::get_pure);
+}
+
+DIAResult<DWORD> DIASymbol::getRank() {
+  return InternalGetDIAValue(&IDiaSymbol::get_rank);
+}
+
+DIAResult<BOOL> DIASymbol::isReference() {
+  return InternalGetDIAValue(&IDiaSymbol::get_reference);
+}
+
+DIAResult<BOOL> DIASymbol::isRValueReference() {
+  return InternalGetDIAValue(&IDiaSymbol::get_RValueReference);
+}
+
+DIAResult<DWORD> DIASymbol::getRegisterId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_registerId);
+}
+
+DIAResult<DWORD> DIASymbol::getRegisterType() {
+  return InternalGetDIAValue(&IDiaSymbol::get_registerType);
+}
+
+DIAResult<DWORD> DIASymbol::getRelativeVirtualAddress() {
+  return InternalGetDIAValue(&IDiaSymbol::get_relativeVirtualAddress);
+}
+
+DIAResult<BOOL> DIASymbol::isRestrictedType() {
+  return InternalGetDIAValue(&IDiaSymbol::get_restrictedType);
+}
+
+DIAResult<DWORD> DIASymbol::getSamplerSlot() {
+  return InternalGetDIAValue(&IDiaSymbol::get_samplerSlot);
+}
+
+DIAResult<BOOL> DIASymbol::isScoped() {
+  return InternalGetDIAValue(&IDiaSymbol::get_scoped);
+}
+
+DIAResult<BOOL> DIASymbol::isRefUdt() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isRefUdt);
+}
+
+DIAResult<BOOL> DIASymbol::isValueUdt() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isValueUdt);
+}
+
+DIAResult<BOOL> DIASymbol::isInterfaceUdt() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isInterfaceUdt);
+}
+
+DIAResult<BOOL> DIASymbol::isCxxReturnUdt() {
+  return InternalGetDIAValue(&IDiaSymbol::get_isCxxReturnUdt);
+}
+
+DIAResult<DWORD> DIASymbol::getSignature() {
+  return InternalGetDIAValue(&IDiaSymbol::get_signature);
+}
+
+DIAResult<DWORD> DIASymbol::getSizeInUdt() {
+  return InternalGetDIAValue(&IDiaSymbol::get_sizeInUdt);
+}
+
+DIAResult<DWORD> DIASymbol::getSlot() {
+  return InternalGetDIAValue(&IDiaSymbol::get_slot);
+}
+
+DIAResult<DIAString> DIASymbol::getSourceFileName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_sourceFileName);
+}
+
+DIAResult<DWORD> DIASymbol::getStride() {
+  return InternalGetDIAValue(&IDiaSymbol::get_stride);
+}
+
+DIAResult<DWORD> DIASymbol::getSubTypeId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_subTypeId);
+}
+
+DIAResult<DIAString> DIASymbol::getSymbolsFileName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_symbolsFileName);
+}
+
+DIAResult<DWORD> DIASymbol::getSymIndexId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_symIndexId);
+}
+
+DIAResult<DiaSymTagEnum> DIASymbol::getSymTag() {
+  return InternalGetDIAValue<DWORD, DiaSymTagEnum>(&IDiaSymbol::get_symTag);
+}
+
+DIAResult<DWORD> DIASymbol::getTargetOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_targetOffset);
+}
+
+DIAResult<DWORD> DIASymbol::getTargetRelativeVirtualAddress() {
+  return InternalGetDIAValue(&IDiaSymbol::get_targetRelativeVirtualAddress);
+}
+
+DIAResult<DWORD> DIASymbol::getTargetSection() {
+  return InternalGetDIAValue(&IDiaSymbol::get_targetSection);
+}
+
+DIAResult<ULONGLONG> DIASymbol::getTargetVirtualAddress() {
+  return InternalGetDIAValue(&IDiaSymbol::get_targetVirtualAddress);
+}
+
+DIAResult<DWORD> DIASymbol::getTextureSlot() {
+  return InternalGetDIAValue(&IDiaSymbol::get_textureSlot);
+}
+
+DIAResult<LONG> DIASymbol::getThisAdjust() {
+  return InternalGetDIAValue(&IDiaSymbol::get_thisAdjust);
+}
+
+DIAResult<THUNK_ORDINAL> DIASymbol::getThunkOrdinal() {
+  return InternalGetDIAValue<DWORD, THUNK_ORDINAL>(
+      &IDiaSymbol::get_thunkOrdinal);
+}
+
+DIAResult<DWORD> DIASymbol::getTimeStamp() {
+  return InternalGetDIAValue(&IDiaSymbol::get_timeStamp);
+}
+
+DIAResult<DWORD> DIASymbol::getToken() {
+  return InternalGetDIAValue(&IDiaSymbol::get_token);
+}
+
+DIAResult<DWORD> DIASymbol::getUavSlot() {
+  return InternalGetDIAValue(&IDiaSymbol::get_uavSlot);
+}
+
+DIAResult<UdtKind> DIASymbol::getUdtKind() {
+  return InternalGetDIAValue<DWORD, UdtKind>(&IDiaSymbol::get_udtKind);
+}
+
+DIAResult<BOOL> DIASymbol::isUnalignedType() {
+  return InternalGetDIAValue(&IDiaSymbol::get_unalignedType);
+}
+
+DIAResult<DIAString> DIASymbol::getUndecoratedName() {
+  return InternalGetDIAStringValue(&IDiaSymbol::get_undecoratedName);
+}
+
+DIAResult<DWORD> DIASymbol::getUnmodifiedTypeId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_unmodifiedTypeId);
+}
+
+DIAResult<DWORD> DIASymbol::getUpperBoundId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_upperBoundId);
+}
+
+DIAResult<BOOL> DIASymbol::isVirtual() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtual);
+}
+
+DIAResult<ULONGLONG> DIASymbol::getVirtualAddress() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtualAddress);
+}
+
+DIAResult<BOOL> DIASymbol::isVirtualBaseClass() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtualBaseClass);
+}
+
+DIAResult<DWORD> DIASymbol::getVirtualBaseDispIndex() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtualBaseDispIndex);
+}
+
+DIAResult<DWORD> DIASymbol::getVirtualBaseOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtualBaseOffset);
+}
+
+DIAResult<LONG> DIASymbol::getVirtualBasePointerOffset() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtualBasePointerOffset);
+}
+
+DIAResult<DWORD> DIASymbol::getVirtualTableShapeId() {
+  return InternalGetDIAValue(&IDiaSymbol::get_virtualTableShapeId);
+}
+
+DIAResult<BOOL> DIASymbol::isVolatileType() {
+  return InternalGetDIAValue(&IDiaSymbol::get_volatileType);
+}
index b2d4153594b1ee876d9cc01bbe87e9a847a17620..3e908e1e75481f9d4832cea737f2f66857789fc9 100644 (file)
-//===- DIASymbol.h - Dump debug info from a PDB file ------------*- C++ -*-===//\r
-//\r
-//                     The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-//\r
-// Provides a wrapper around the IDiaSymbol interface.  IDiaSymbol is used to\r
-// represent any kind of symbol from functions, to compilands, to source files.\r
-// It provides a monolithic interface of close to 200 operations, and the set\r
-// of operations that are valid depends on the type of the symbol.  Since it is\r
-// not clearly documented which set of operations is valid for which type of\r
-// symbol, the best way of figuring it out is to dump every method for every\r
-// symbol, and see which methods return errors.  This wrapper provides a clean\r
-// way of doing this without involving needing to embed lots of unsightly\r
-// HRESULT checking at every callsite.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-\r
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H\r
-#define LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H\r
-\r
-#include "DIAExtras.h"\r
-#include "llvm/ADT/SmallString.h"\r
-\r
-namespace llvm {\r
-namespace sys {\r
-namespace windows {\r
-\r
-class DIASymbol {\r
-public:\r
-  DIASymbol(IDiaSymbol *DiaSymbol);\r
-  ~DIASymbol();\r
-\r
-  /// Dumps the value of every property (if it exists) with a default name.\r
-  /// This is useful for understanding what symbol types support what methods\r
-  /// during development time.\r
-  void fullDump(int IndentLevel);\r
-\r
-// TODO: The following methods are present on IDiaSymbol but do not yet have\r
-// wrapper methods.\r
-//\r
-// HRESULT get_value(VARIANT *pRetVal) = 0;\r
-// HRESULT get_undecoratedNameEx(DWORD undecorateOptions, BSTR *name) = 0;\r
-// HRESULT getSrcLineOnTypeDefn(IDiaLineNumber **ppResult) = 0;\r
-// HRESULT get_dataBytes(DWORD cbData, DWORD *pcbData, BYTE *pbData) = 0;\r
-// HRESULT get_types(DWORD cTypes, DWORD *pcTypes, IDiaSymbol **pTypes) = 0;\r
-// HRESULT get_typeIds(DWORD cTypeIds, DWORD *pcTypeIds, DWORD *pdwTypeIds) = 0;\r
-// HRESULT get_numericProperties(DWORD cnt, DWORD *pcnt,\r
-//                               DWORD *pProperties) = 0;\r
-// HRESULT get_modifierValues(DWORD cnt, DWORD *pcnt, WORD *pModifiers) = 0;\r
-// HRESULT get_acceleratorPointerTags(DWORD cnt, DWORD *pcnt, DWORD\r
-//                                    *pPointerTags) = 0;\r
-// HRESULT get_hfaFloat(BOOL *pRetVal) = 0;\r
-// HRESULT get_hfaDouble(BOOL *pRetVal) = 0;\r
-// HRESULT get_paramBasePointerRegisterId(DWORD *pRetVal) = 0;\r
-// HRESULT get_isWinRTPointer(BOOL *pRetVal) = 0;\r
-\r
-#if (_MSC_FULL_VER >= 180031101)\r
-  // These methods are only available on VS 2013 SP 4 and higher.\r
-  DIAResult<BOOL> isPGO();\r
-  DIAResult<BOOL> hasValidPGOCounts();\r
-  DIAResult<BOOL> isOptimizedForSpeed();\r
-  DIAResult<DWORD> getPGOEntryCount();\r
-  DIAResult<DWORD> getPGOEdgeCount();\r
-  DIAResult<ULONGLONG> getPGODynamicInstructionCount();\r
-  DIAResult<DWORD> getStaticSize();\r
-  DIAResult<DWORD> getFinalLiveStaticSize();\r
-  DIAResult<DIAString> getPhaseName();\r
-  DIAResult<BOOL> hasControlFlowCheck();\r
-#endif\r
-\r
-  DIAResult<DiaSymbolPtr> getLexicalParent();\r
-  DIAResult<DiaSymbolPtr> getClassParent();\r
-  DIAResult<DiaSymbolPtr> getType();\r
-  DIAResult<DiaSymbolPtr> getArrayIndexType();\r
-  DIAResult<DiaSymbolPtr> getVirtualTableShape();\r
-  DIAResult<DiaSymbolPtr> getLowerBound();\r
-  DIAResult<DiaSymbolPtr> getUpperBound();\r
-  DIAResult<DiaSymbolPtr> getObjectPointerType();\r
-  DIAResult<DiaSymbolPtr> getContainer();\r
-  DIAResult<DiaSymbolPtr> getVirtualBaseTableType();\r
-  DIAResult<DiaSymbolPtr> getUnmodifiedType();\r
-  DIAResult<DiaSymbolPtr> getSubType();\r
-  DIAResult<DiaSymbolPtr> getBaseSymbol();\r
-\r
-  DIAResult<DWORD> getAccess();\r
-  DIAResult<DWORD> getAddressOffset();\r
-  DIAResult<DWORD> getAddressSection();\r
-  DIAResult<DWORD> getAge();\r
-  DIAResult<DWORD> getArrayIndexTypeId();\r
-  DIAResult<DWORD> getBackEndBuild();\r
-  DIAResult<DWORD> getBackEndMajor();\r
-  DIAResult<DWORD> getBackEndMinor();\r
-  DIAResult<DWORD> getBackEndQFE();\r
-  DIAResult<DWORD> getBaseDataOffset();\r
-  DIAResult<DWORD> getBaseDataSlot();\r
-  DIAResult<DWORD> getBaseSymbolId();\r
-  DIAResult<DWORD> getBaseType();\r
-  DIAResult<DWORD> getBitPosition();\r
-  DIAResult<DWORD> getBuiltInKind();\r
-  DIAResult<CV_call_e> getCallingConvention();\r
-  DIAResult<DWORD> getClassParentId();\r
-  DIAResult<DIAString> getCompilerName();\r
-  DIAResult<DWORD> getCount();\r
-  DIAResult<DWORD> getCountLiveRanges();\r
-  DIAResult<DWORD> getFrontEndBuild();\r
-  DIAResult<DWORD> getFrontEndMajor();\r
-  DIAResult<DWORD> getFrontEndMinor();\r
-  DIAResult<DWORD> getFrontEndQFE();\r
-  DIAResult<CV_CFL_LANG> getLanguage();\r
-  DIAResult<DWORD> getLexicalParentId();\r
-  DIAResult<DIAString> getLibraryName();\r
-  DIAResult<DWORD> getLiveRangeStartAddressOffset();\r
-  DIAResult<DWORD> getLiveRangeStartAddressSection();\r
-  DIAResult<DWORD> getLiveRangeStartRelativeVirtualAddress();\r
-  DIAResult<DWORD> getLocalBasePointerRegisterId();\r
-  DIAResult<DWORD> getLowerBoundId();\r
-  DIAResult<DWORD> getMemorySpaceKind();\r
-  DIAResult<DIAString> getName();\r
-  DIAResult<DWORD> getNumberOfAcceleratorPointerTags();\r
-  DIAResult<DWORD> getNumberOfColumns();\r
-  DIAResult<DWORD> getNumberOfModifiers();\r
-  DIAResult<DWORD> getNumberOfRegisterIndices();\r
-  DIAResult<DWORD> getNumberOfRows();\r
-  DIAResult<DIAString> getObjectFileName();\r
-  DIAResult<DWORD> getOemSymbolId();\r
-  DIAResult<DWORD> getOffsetInUdt();\r
-  DIAResult<CV_CPU_TYPE_e> getPlatform();\r
-  DIAResult<DWORD> getRank();\r
-  DIAResult<DWORD> getRegisterId();\r
-  DIAResult<DWORD> getRegisterType();\r
-  DIAResult<DWORD> getRelativeVirtualAddress();\r
-  DIAResult<DWORD> getSamplerSlot();\r
-  DIAResult<DWORD> getSignature();\r
-  DIAResult<DWORD> getSizeInUdt();\r
-  DIAResult<DWORD> getSlot();\r
-  DIAResult<DIAString> getSourceFileName();\r
-  DIAResult<DWORD> getStride();\r
-  DIAResult<DWORD> getSubTypeId();\r
-  DIAResult<DIAString> getSymbolsFileName();\r
-  DIAResult<DWORD> getSymIndexId();\r
-  DIAResult<DWORD> getTargetOffset();\r
-  DIAResult<DWORD> getTargetRelativeVirtualAddress();\r
-  DIAResult<DWORD> getTargetSection();\r
-  DIAResult<DWORD> getTextureSlot();\r
-  DIAResult<DWORD> getTimeStamp();\r
-  DIAResult<DWORD> getToken();\r
-  DIAResult<DWORD> getUavSlot();\r
-  DIAResult<DIAString> getUndecoratedName();\r
-  DIAResult<DWORD> getUnmodifiedTypeId();\r
-  DIAResult<DWORD> getUpperBoundId();\r
-  DIAResult<DWORD> getVirtualBaseDispIndex();\r
-  DIAResult<DWORD> getVirtualBaseOffset();\r
-  DIAResult<DWORD> getVirtualTableShapeId();\r
-  DIAResult<DataKind> getDataKind();\r
-  DIAResult<DiaSymTagEnum> getSymTag();\r
-  DIAResult<GUID> getGuid();\r
-  DIAResult<LONG> getOffset();\r
-  DIAResult<LONG> getThisAdjust();\r
-  DIAResult<LONG> getVirtualBasePointerOffset();\r
-  DIAResult<LocationType> getLocationType();\r
-  DIAResult<MachineTypeEnum> getMachineType();\r
-  DIAResult<THUNK_ORDINAL> getThunkOrdinal();\r
-  DIAResult<ULONGLONG> getLength();\r
-  DIAResult<ULONGLONG> getLiveRangeLength();\r
-  DIAResult<ULONGLONG> getTargetVirtualAddress();\r
-  DIAResult<ULONGLONG> getVirtualAddress();\r
-  DIAResult<UdtKind> getUdtKind();\r
-  DIAResult<BOOL> hasConstructor();\r
-  DIAResult<BOOL> hasCustomCallingConvention();\r
-  DIAResult<BOOL> hasFarReturn();\r
-  DIAResult<BOOL> isCode();\r
-  DIAResult<BOOL> isCompilerGenerated();\r
-  DIAResult<BOOL> isConstType();\r
-  DIAResult<BOOL> isEditAndContinueEnabled();\r
-  DIAResult<BOOL> isFunction();\r
-  DIAResult<BOOL> getAddressTaken();\r
-  DIAResult<BOOL> getNoStackOrdering();\r
-  DIAResult<BOOL> hasAlloca();\r
-  DIAResult<BOOL> hasAssignmentOperator();\r
-  DIAResult<BOOL> hasCTypes();\r
-  DIAResult<BOOL> hasCastOperator();\r
-  DIAResult<BOOL> hasDebugInfo();\r
-  DIAResult<BOOL> hasEH();\r
-  DIAResult<BOOL> hasEHa();\r
-  DIAResult<BOOL> hasInlAsm();\r
-  DIAResult<BOOL> hasInlineAttribute();\r
-  DIAResult<BOOL> hasInterruptReturn();\r
-  DIAResult<BOOL> hasLongJump();\r
-  DIAResult<BOOL> hasManagedCode();\r
-  DIAResult<BOOL> hasNestedTypes();\r
-  DIAResult<BOOL> hasNoInlineAttribute();\r
-  DIAResult<BOOL> hasNoReturnAttribute();\r
-  DIAResult<BOOL> hasOptimizedCodeDebugInfo();\r
-  DIAResult<BOOL> hasOverloadedOperator();\r
-  DIAResult<BOOL> hasSEH();\r
-  DIAResult<BOOL> hasSecurityChecks();\r
-  DIAResult<BOOL> hasSetJump();\r
-  DIAResult<BOOL> hasStrictGSCheck();\r
-  DIAResult<BOOL> isAcceleratorGroupSharedLocal();\r
-  DIAResult<BOOL> isAcceleratorPointerTagLiveRange();\r
-  DIAResult<BOOL> isAcceleratorStubFunction();\r
-  DIAResult<BOOL> isAggregated();\r
-  DIAResult<BOOL> isBaseVirtualFunction();\r
-  DIAResult<BOOL> isCVTCIL();\r
-  DIAResult<BOOL> isConstructorVirtualBase();\r
-  DIAResult<BOOL> isCxxReturnUdt();\r
-  DIAResult<BOOL> isDataAligned();\r
-  DIAResult<BOOL> isHLSLData();\r
-  DIAResult<BOOL> isHotpatchable();\r
-  DIAResult<BOOL> isIndirectVirtualBaseClass();\r
-  DIAResult<BOOL> isInterfaceUdt();\r
-  DIAResult<BOOL> isIntrinsic();\r
-  DIAResult<BOOL> isLTCG();\r
-  DIAResult<BOOL> isLocationControlFlowDependent();\r
-  DIAResult<BOOL> isMSILNetmodule();\r
-  DIAResult<BOOL> isManagedRef();\r
-  DIAResult<BOOL> isMatrixRowMajor();\r
-  DIAResult<BOOL> isMsilRef();\r
-  DIAResult<BOOL> isMultipleInheritance();\r
-  DIAResult<BOOL> isNaked();\r
-  DIAResult<BOOL> isNested();\r
-  DIAResult<BOOL> isOptimizedAway();\r
-  DIAResult<BOOL> isPacked();\r
-  DIAResult<BOOL> isPointerBasedOnSymbolValue();\r
-  DIAResult<BOOL> isPointerToDataMember();\r
-  DIAResult<BOOL> isPointerToMemberFunction();\r
-  DIAResult<BOOL> isPureVirtual();\r
-  DIAResult<BOOL> isRValueReference();\r
-  DIAResult<BOOL> isRefUdt();\r
-  DIAResult<BOOL> isReference();\r
-  DIAResult<BOOL> isRestrictedType();\r
-  DIAResult<BOOL> isReturnValue();\r
-  DIAResult<BOOL> isSafeBuffers();\r
-  DIAResult<BOOL> isScoped();\r
-  DIAResult<BOOL> isSdl();\r
-  DIAResult<BOOL> isSingleInheritance();\r
-  DIAResult<BOOL> isSplitted();\r
-  DIAResult<BOOL> isStatic();\r
-  DIAResult<BOOL> isStripped();\r
-  DIAResult<BOOL> isUnalignedType();\r
-  DIAResult<BOOL> isUnreached();\r
-  DIAResult<BOOL> isValueUdt();\r
-  DIAResult<BOOL> isVirtual();\r
-  DIAResult<BOOL> isVirtualBaseClass();\r
-  DIAResult<BOOL> isVirtualInheritance();\r
-  DIAResult<BOOL> isVolatileType();\r
-\r
-private:\r
-  template <class T, class U = T>\r
-  DIAResult<U>\r
-  InternalGetDIAValue(HRESULT (__stdcall IDiaSymbol::*Method)(T *)) {\r
-    T Value;\r
-    if (S_OK == (Symbol->*Method)(&Value))\r
-      return DIAResult<U>(U(Value));\r
-    else\r
-      return DIAResult<U>();\r
-  }\r
-\r
-  DIAResult<DIAString>\r
-  InternalGetDIAStringValue(HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {\r
-    BSTR String16;\r
-    if (S_OK == (Symbol->*Method)(&String16)) {\r
-      std::string String8;\r
-      llvm::sys::windows::BSTRToUTF8(String16, String8);\r
-      SysFreeString(String16);\r
-      return DIAResult<DIAString>(DIAString(String8));\r
-    } else\r
-      return DIAResult<DIAString>();\r
-  }\r
-\r
-  IDiaSymbol *Symbol;\r
-};\r
-\r
-} // namespace windows\r
-} // namespace sys\r
-} // namespace llvm\r
-\r
-#endif\r
+//===- DIASymbol.h - Dump debug info from a PDB file ------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Provides a wrapper around the IDiaSymbol interface.  IDiaSymbol is used to
+// represent any kind of symbol from functions, to compilands, to source files.
+// It provides a monolithic interface of close to 200 operations, and the set
+// of operations that are valid depends on the type of the symbol.  Since it is
+// not clearly documented which set of operations is valid for which type of
+// symbol, the best way of figuring it out is to dump every method for every
+// symbol, and see which methods return errors.  This wrapper provides a clean
+// way of doing this without involving needing to embed lots of unsightly
+// HRESULT checking at every callsite.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H
+#define LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H
+
+#include "DIAExtras.h"
+#include "llvm/ADT/SmallString.h"
+
+namespace llvm {
+namespace sys {
+namespace windows {
+
+class DIASymbol {
+public:
+  DIASymbol(IDiaSymbol *DiaSymbol);
+  ~DIASymbol();
+
+  /// Dumps the value of every property (if it exists) with a default name.
+  /// This is useful for understanding what symbol types support what methods
+  /// during development time.
+  void fullDump(int IndentLevel);
+
+// TODO: The following methods are present on IDiaSymbol but do not yet have
+// wrapper methods.
+//
+// HRESULT get_value(VARIANT *pRetVal) = 0;
+// HRESULT get_undecoratedNameEx(DWORD undecorateOptions, BSTR *name) = 0;
+// HRESULT getSrcLineOnTypeDefn(IDiaLineNumber **ppResult) = 0;
+// HRESULT get_dataBytes(DWORD cbData, DWORD *pcbData, BYTE *pbData) = 0;
+// HRESULT get_types(DWORD cTypes, DWORD *pcTypes, IDiaSymbol **pTypes) = 0;
+// HRESULT get_typeIds(DWORD cTypeIds, DWORD *pcTypeIds, DWORD *pdwTypeIds) = 0;
+// HRESULT get_numericProperties(DWORD cnt, DWORD *pcnt,
+//                               DWORD *pProperties) = 0;
+// HRESULT get_modifierValues(DWORD cnt, DWORD *pcnt, WORD *pModifiers) = 0;
+// HRESULT get_acceleratorPointerTags(DWORD cnt, DWORD *pcnt, DWORD
+//                                    *pPointerTags) = 0;
+// HRESULT get_hfaFloat(BOOL *pRetVal) = 0;
+// HRESULT get_hfaDouble(BOOL *pRetVal) = 0;
+// HRESULT get_paramBasePointerRegisterId(DWORD *pRetVal) = 0;
+// HRESULT get_isWinRTPointer(BOOL *pRetVal) = 0;
+
+#if (_MSC_FULL_VER >= 180031101)
+  // These methods are only available on VS 2013 SP 4 and higher.
+  DIAResult<BOOL> isPGO();
+  DIAResult<BOOL> hasValidPGOCounts();
+  DIAResult<BOOL> isOptimizedForSpeed();
+  DIAResult<DWORD> getPGOEntryCount();
+  DIAResult<DWORD> getPGOEdgeCount();
+  DIAResult<ULONGLONG> getPGODynamicInstructionCount();
+  DIAResult<DWORD> getStaticSize();
+  DIAResult<DWORD> getFinalLiveStaticSize();
+  DIAResult<DIAString> getPhaseName();
+  DIAResult<BOOL> hasControlFlowCheck();
+#endif
+
+  DIAResult<DiaSymbolPtr> getLexicalParent();
+  DIAResult<DiaSymbolPtr> getClassParent();
+  DIAResult<DiaSymbolPtr> getType();
+  DIAResult<DiaSymbolPtr> getArrayIndexType();
+  DIAResult<DiaSymbolPtr> getVirtualTableShape();
+  DIAResult<DiaSymbolPtr> getLowerBound();
+  DIAResult<DiaSymbolPtr> getUpperBound();
+  DIAResult<DiaSymbolPtr> getObjectPointerType();
+  DIAResult<DiaSymbolPtr> getContainer();
+  DIAResult<DiaSymbolPtr> getVirtualBaseTableType();
+  DIAResult<DiaSymbolPtr> getUnmodifiedType();
+  DIAResult<DiaSymbolPtr> getSubType();
+  DIAResult<DiaSymbolPtr> getBaseSymbol();
+
+  DIAResult<DWORD> getAccess();
+  DIAResult<DWORD> getAddressOffset();
+  DIAResult<DWORD> getAddressSection();
+  DIAResult<DWORD> getAge();
+  DIAResult<DWORD> getArrayIndexTypeId();
+  DIAResult<DWORD> getBackEndBuild();
+  DIAResult<DWORD> getBackEndMajor();
+  DIAResult<DWORD> getBackEndMinor();
+  DIAResult<DWORD> getBackEndQFE();
+  DIAResult<DWORD> getBaseDataOffset();
+  DIAResult<DWORD> getBaseDataSlot();
+  DIAResult<DWORD> getBaseSymbolId();
+  DIAResult<DWORD> getBaseType();
+  DIAResult<DWORD> getBitPosition();
+  DIAResult<DWORD> getBuiltInKind();
+  DIAResult<CV_call_e> getCallingConvention();
+  DIAResult<DWORD> getClassParentId();
+  DIAResult<DIAString> getCompilerName();
+  DIAResult<DWORD> getCount();
+  DIAResult<DWORD> getCountLiveRanges();
+  DIAResult<DWORD> getFrontEndBuild();
+  DIAResult<DWORD> getFrontEndMajor();
+  DIAResult<DWORD> getFrontEndMinor();
+  DIAResult<DWORD> getFrontEndQFE();
+  DIAResult<CV_CFL_LANG> getLanguage();
+  DIAResult<DWORD> getLexicalParentId();
+  DIAResult<DIAString> getLibraryName();
+  DIAResult<DWORD> getLiveRangeStartAddressOffset();
+  DIAResult<DWORD> getLiveRangeStartAddressSection();
+  DIAResult<DWORD> getLiveRangeStartRelativeVirtualAddress();
+  DIAResult<DWORD> getLocalBasePointerRegisterId();
+  DIAResult<DWORD> getLowerBoundId();
+  DIAResult<DWORD> getMemorySpaceKind();
+  DIAResult<DIAString> getName();
+  DIAResult<DWORD> getNumberOfAcceleratorPointerTags();
+  DIAResult<DWORD> getNumberOfColumns();
+  DIAResult<DWORD> getNumberOfModifiers();
+  DIAResult<DWORD> getNumberOfRegisterIndices();
+  DIAResult<DWORD> getNumberOfRows();
+  DIAResult<DIAString> getObjectFileName();
+  DIAResult<DWORD> getOemSymbolId();
+  DIAResult<DWORD> getOffsetInUdt();
+  DIAResult<CV_CPU_TYPE_e> getPlatform();
+  DIAResult<DWORD> getRank();
+  DIAResult<DWORD> getRegisterId();
+  DIAResult<DWORD> getRegisterType();
+  DIAResult<DWORD> getRelativeVirtualAddress();
+  DIAResult<DWORD> getSamplerSlot();
+  DIAResult<DWORD> getSignature();
+  DIAResult<DWORD> getSizeInUdt();
+  DIAResult<DWORD> getSlot();
+  DIAResult<DIAString> getSourceFileName();
+  DIAResult<DWORD> getStride();
+  DIAResult<DWORD> getSubTypeId();
+  DIAResult<DIAString> getSymbolsFileName();
+  DIAResult<DWORD> getSymIndexId();
+  DIAResult<DWORD> getTargetOffset();
+  DIAResult<DWORD> getTargetRelativeVirtualAddress();
+  DIAResult<DWORD> getTargetSection();
+  DIAResult<DWORD> getTextureSlot();
+  DIAResult<DWORD> getTimeStamp();
+  DIAResult<DWORD> getToken();
+  DIAResult<DWORD> getUavSlot();
+  DIAResult<DIAString> getUndecoratedName();
+  DIAResult<DWORD> getUnmodifiedTypeId();
+  DIAResult<DWORD> getUpperBoundId();
+  DIAResult<DWORD> getVirtualBaseDispIndex();
+  DIAResult<DWORD> getVirtualBaseOffset();
+  DIAResult<DWORD> getVirtualTableShapeId();
+  DIAResult<DataKind> getDataKind();
+  DIAResult<DiaSymTagEnum> getSymTag();
+  DIAResult<GUID> getGuid();
+  DIAResult<LONG> getOffset();
+  DIAResult<LONG> getThisAdjust();
+  DIAResult<LONG> getVirtualBasePointerOffset();
+  DIAResult<LocationType> getLocationType();
+  DIAResult<MachineTypeEnum> getMachineType();
+  DIAResult<THUNK_ORDINAL> getThunkOrdinal();
+  DIAResult<ULONGLONG> getLength();
+  DIAResult<ULONGLONG> getLiveRangeLength();
+  DIAResult<ULONGLONG> getTargetVirtualAddress();
+  DIAResult<ULONGLONG> getVirtualAddress();
+  DIAResult<UdtKind> getUdtKind();
+  DIAResult<BOOL> hasConstructor();
+  DIAResult<BOOL> hasCustomCallingConvention();
+  DIAResult<BOOL> hasFarReturn();
+  DIAResult<BOOL> isCode();
+  DIAResult<BOOL> isCompilerGenerated();
+  DIAResult<BOOL> isConstType();
+  DIAResult<BOOL> isEditAndContinueEnabled();
+  DIAResult<BOOL> isFunction();
+  DIAResult<BOOL> getAddressTaken();
+  DIAResult<BOOL> getNoStackOrdering();
+  DIAResult<BOOL> hasAlloca();
+  DIAResult<BOOL> hasAssignmentOperator();
+  DIAResult<BOOL> hasCTypes();
+  DIAResult<BOOL> hasCastOperator();
+  DIAResult<BOOL> hasDebugInfo();
+  DIAResult<BOOL> hasEH();
+  DIAResult<BOOL> hasEHa();
+  DIAResult<BOOL> hasInlAsm();
+  DIAResult<BOOL> hasInlineAttribute();
+  DIAResult<BOOL> hasInterruptReturn();
+  DIAResult<BOOL> hasLongJump();
+  DIAResult<BOOL> hasManagedCode();
+  DIAResult<BOOL> hasNestedTypes();
+  DIAResult<BOOL> hasNoInlineAttribute();
+  DIAResult<BOOL> hasNoReturnAttribute();
+  DIAResult<BOOL> hasOptimizedCodeDebugInfo();
+  DIAResult<BOOL> hasOverloadedOperator();
+  DIAResult<BOOL> hasSEH();
+  DIAResult<BOOL> hasSecurityChecks();
+  DIAResult<BOOL> hasSetJump();
+  DIAResult<BOOL> hasStrictGSCheck();
+  DIAResult<BOOL> isAcceleratorGroupSharedLocal();
+  DIAResult<BOOL> isAcceleratorPointerTagLiveRange();
+  DIAResult<BOOL> isAcceleratorStubFunction();
+  DIAResult<BOOL> isAggregated();
+  DIAResult<BOOL> isBaseVirtualFunction();
+  DIAResult<BOOL> isCVTCIL();
+  DIAResult<BOOL> isConstructorVirtualBase();
+  DIAResult<BOOL> isCxxReturnUdt();
+  DIAResult<BOOL> isDataAligned();
+  DIAResult<BOOL> isHLSLData();
+  DIAResult<BOOL> isHotpatchable();
+  DIAResult<BOOL> isIndirectVirtualBaseClass();
+  DIAResult<BOOL> isInterfaceUdt();
+  DIAResult<BOOL> isIntrinsic();
+  DIAResult<BOOL> isLTCG();
+  DIAResult<BOOL> isLocationControlFlowDependent();
+  DIAResult<BOOL> isMSILNetmodule();
+  DIAResult<BOOL> isManagedRef();
+  DIAResult<BOOL> isMatrixRowMajor();
+  DIAResult<BOOL> isMsilRef();
+  DIAResult<BOOL> isMultipleInheritance();
+  DIAResult<BOOL> isNaked();
+  DIAResult<BOOL> isNested();
+  DIAResult<BOOL> isOptimizedAway();
+  DIAResult<BOOL> isPacked();
+  DIAResult<BOOL> isPointerBasedOnSymbolValue();
+  DIAResult<BOOL> isPointerToDataMember();
+  DIAResult<BOOL> isPointerToMemberFunction();
+  DIAResult<BOOL> isPureVirtual();
+  DIAResult<BOOL> isRValueReference();
+  DIAResult<BOOL> isRefUdt();
+  DIAResult<BOOL> isReference();
+  DIAResult<BOOL> isRestrictedType();
+  DIAResult<BOOL> isReturnValue();
+  DIAResult<BOOL> isSafeBuffers();
+  DIAResult<BOOL> isScoped();
+  DIAResult<BOOL> isSdl();
+  DIAResult<BOOL> isSingleInheritance();
+  DIAResult<BOOL> isSplitted();
+  DIAResult<BOOL> isStatic();
+  DIAResult<BOOL> isStripped();
+  DIAResult<BOOL> isUnalignedType();
+  DIAResult<BOOL> isUnreached();
+  DIAResult<BOOL> isValueUdt();
+  DIAResult<BOOL> isVirtual();
+  DIAResult<BOOL> isVirtualBaseClass();
+  DIAResult<BOOL> isVirtualInheritance();
+  DIAResult<BOOL> isVolatileType();
+
+private:
+  template <class T, class U = T>
+  DIAResult<U>
+  InternalGetDIAValue(HRESULT (__stdcall IDiaSymbol::*Method)(T *)) {
+    T Value;
+    if (S_OK == (Symbol->*Method)(&Value))
+      return DIAResult<U>(U(Value));
+    else
+      return DIAResult<U>();
+  }
+
+  DIAResult<DIAString>
+  InternalGetDIAStringValue(HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
+    BSTR String16;
+    if (S_OK == (Symbol->*Method)(&String16)) {
+      std::string String8;
+      llvm::sys::windows::BSTRToUTF8(String16, String8);
+      SysFreeString(String16);
+      return DIAResult<DIAString>(DIAString(String8));
+    } else
+      return DIAResult<DIAString>();
+  }
+
+  IDiaSymbol *Symbol;
+};
+
+} // namespace windows
+} // namespace sys
+} // namespace llvm
+
+#endif
index c8656a052d55f1187854e662d2934158076cdb33..e73289cc00dbda08a027e010ff63fbc3a0a44b5a 100644 (file)
@@ -1,32 +1,32 @@
-//===- llvm-pdbdump.h - Common includes for llvm-pdbdump --------*- C++ -*-===//\r
-//\r
-//                     The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-// Common defines and header includes for all llvm-pdbdump.  The definitions\r
-// here configure the necessary #defines and include system headers in the\r
-// proper order for using DIA.\r
-//===----------------------------------------------------------------------===//\r
-\r
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H\r
-#define LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H\r
-\r
-#define NTDDI_VERSION NTDDI_VISTA\r
-#define _WIN32_WINNT _WIN32_WINNT_VISTA\r
-#define WINVER _WIN32_WINNT_VISTA\r
-#ifndef NOMINMAX\r
-#define NOMINMAX\r
-#endif\r
-\r
-// atlbase.h has to come before windows.h\r
-#include <atlbase.h>\r
-#include <windows.h>\r
-\r
-// DIA headers must come after windows headers.\r
-#include <cvconst.h>\r
-#include <dia2.h>\r
-\r
+//===- llvm-pdbdump.h - Common includes for llvm-pdbdump --------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+// Common defines and header includes for all llvm-pdbdump.  The definitions
+// here configure the necessary #defines and include system headers in the
+// proper order for using DIA.
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H
+#define LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H
+
+#define NTDDI_VERSION NTDDI_VISTA
+#define _WIN32_WINNT _WIN32_WINNT_VISTA
+#define WINVER _WIN32_WINNT_VISTA
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
+// atlbase.h has to come before windows.h
+#include <atlbase.h>
+#include <windows.h>
+
+// DIA headers must come after windows headers.
+#include <cvconst.h>
+#include <dia2.h>
+
 #endif
\ No newline at end of file
 #endif
\ No newline at end of file