//==- NativeRawSymbol.h - Native implementation of IPDBRawSymbol -*- C++ -*-==//
 
//
 
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 
// See https://llvm.org/LICENSE.txt for license information.
 
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
//
 
//===----------------------------------------------------------------------===//
 
 
 
#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVERAWSYMBOL_H
 
#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVERAWSYMBOL_H
 
 
 
#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
 
#include <cstdint>
 
#include <memory>
 
 
 
namespace llvm {
 
namespace pdb {
 
 
 
class NativeSession;
 
 
 
class NativeRawSymbol : public IPDBRawSymbol {
 
  friend class SymbolCache;
 
  virtual void initialize() {}
 
 
 
public:
 
  NativeRawSymbol(NativeSession &PDBSession, PDB_SymType Tag,
 
                  SymIndexId SymbolId);
 
 
 
  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
 
            PdbSymbolIdField RecurseIdFields) const override;
 
 
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findChildren(PDB_SymType Type) const override;
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findChildren(PDB_SymType Type, StringRef Name,
 
      PDB_NameSearchFlags Flags) const override;
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findChildrenByAddr(PDB_SymType Type, StringRef Name,
 
                       PDB_NameSearchFlags Flags,
 
                       uint32_t Section, uint32_t Offset) const override;
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findChildrenByVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
 
                     uint64_t VA) const override;
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
 
      uint32_t RVA) const override;
 
 
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const override;
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findInlineFramesByRVA(uint32_t RVA) const override;
 
  std::unique_ptr<IPDBEnumSymbols>
 
    findInlineFramesByVA(uint64_t VA) const override;
 
 
 
  std::unique_ptr<IPDBEnumLineNumbers> findInlineeLines() const override;
 
  std::unique_ptr<IPDBEnumLineNumbers>
 
    findInlineeLinesByAddr(uint32_t Section, uint32_t Offset,
 
                           uint32_t Length) const override;
 
  std::unique_ptr<IPDBEnumLineNumbers>
 
    findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const override;
 
  std::unique_ptr<IPDBEnumLineNumbers>
 
    findInlineeLinesByVA(uint64_t VA, uint32_t Length) const override;
 
 
 
  void getDataBytes(SmallVector<uint8_t, 32> &Bytes) const override;
 
  void getFrontEndVersion(VersionInfo &Version) const override;
 
  void getBackEndVersion(VersionInfo &Version) const override;
 
  PDB_MemberAccess getAccess() const override;
 
  uint32_t getAddressOffset() const override;
 
  uint32_t getAddressSection() const override;
 
  uint32_t getAge() const override;
 
  SymIndexId getArrayIndexTypeId() const override;
 
  uint32_t getBaseDataOffset() const override;
 
  uint32_t getBaseDataSlot() const override;
 
  SymIndexId getBaseSymbolId() const override;
 
  PDB_BuiltinType getBuiltinType() const override;
 
  uint32_t getBitPosition() const override;
 
  PDB_CallingConv getCallingConvention() const override;
 
  SymIndexId getClassParentId() const override;
 
  std::string getCompilerName() const override;
 
  uint32_t getCount() const override;
 
  uint32_t getCountLiveRanges() const override;
 
  PDB_Lang getLanguage() const override;
 
  SymIndexId getLexicalParentId() const override;
 
  std::string getLibraryName() const override;
 
  uint32_t getLiveRangeStartAddressOffset() const override;
 
  uint32_t getLiveRangeStartAddressSection() const override;
 
  uint32_t getLiveRangeStartRelativeVirtualAddress() const override;
 
  codeview::RegisterId getLocalBasePointerRegisterId() const override;
 
  SymIndexId getLowerBoundId() const override;
 
  uint32_t getMemorySpaceKind() const override;
 
  std::string getName() const override;
 
  uint32_t getNumberOfAcceleratorPointerTags() const override;
 
  uint32_t getNumberOfColumns() const override;
 
  uint32_t getNumberOfModifiers() const override;
 
  uint32_t getNumberOfRegisterIndices() const override;
 
  uint32_t getNumberOfRows() const override;
 
  std::string getObjectFileName() const override;
 
  uint32_t getOemId() const override;
 
  SymIndexId getOemSymbolId() const override;
 
  uint32_t getOffsetInUdt() const override;
 
  PDB_Cpu getPlatform() const override;
 
  uint32_t getRank() const override;
 
  codeview::RegisterId getRegisterId() const override;
 
  uint32_t getRegisterType() const override;
 
  uint32_t getRelativeVirtualAddress() const override;
 
  uint32_t getSamplerSlot() const override;
 
  uint32_t getSignature() const override;
 
  uint32_t getSizeInUdt() const override;
 
  uint32_t getSlot() const override;
 
  std::string getSourceFileName() const override;
 
  std::unique_ptr<IPDBLineNumber> getSrcLineOnTypeDefn() const override;
 
  uint32_t getStride() const override;
 
  SymIndexId getSubTypeId() const override;
 
  std::string getSymbolsFileName() const override;
 
  SymIndexId getSymIndexId() const override;
 
  uint32_t getTargetOffset() const override;
 
  uint32_t getTargetRelativeVirtualAddress() const override;
 
  uint64_t getTargetVirtualAddress() const override;
 
  uint32_t getTargetSection() const override;
 
  uint32_t getTextureSlot() const override;
 
  uint32_t getTimeStamp() const override;
 
  uint32_t getToken() const override;
 
  SymIndexId getTypeId() const override;
 
  uint32_t getUavSlot() const override;
 
  std::string getUndecoratedName() const override;
 
  std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const override;
 
  SymIndexId getUnmodifiedTypeId() const override;
 
  SymIndexId getUpperBoundId() const override;
 
  Variant getValue() const override;
 
  uint32_t getVirtualBaseDispIndex() const override;
 
  uint32_t getVirtualBaseOffset() const override;
 
  SymIndexId getVirtualTableShapeId() const override;
 
  std::unique_ptr<PDBSymbolTypeBuiltin>
 
  getVirtualBaseTableType() const override;
 
  PDB_DataKind getDataKind() const override;
 
  PDB_SymType getSymTag() const override;
 
  codeview::GUID getGuid() const override;
 
  int32_t getOffset() const override;
 
  int32_t getThisAdjust() const override;
 
  int32_t getVirtualBasePointerOffset() const override;
 
  PDB_LocType getLocationType() const override;
 
  PDB_Machine getMachineType() const override;
 
  codeview::ThunkOrdinal getThunkOrdinal() const override;
 
  uint64_t getLength() const override;
 
  uint64_t getLiveRangeLength() const override;
 
  uint64_t getVirtualAddress() const override;
 
  PDB_UdtType getUdtKind() const override;
 
  bool hasConstructor() const override;
 
  bool hasCustomCallingConvention() const override;
 
  bool hasFarReturn() const override;
 
  bool isCode() const override;
 
  bool isCompilerGenerated() const override;
 
  bool isConstType() const override;
 
  bool isEditAndContinueEnabled() const override;
 
  bool isFunction() const override;
 
  bool getAddressTaken() const override;
 
  bool getNoStackOrdering() const override;
 
  bool hasAlloca() const override;
 
  bool hasAssignmentOperator() const override;
 
  bool hasCTypes() const override;
 
  bool hasCastOperator() const override;
 
  bool hasDebugInfo() const override;
 
  bool hasEH() const override;
 
  bool hasEHa() const override;
 
  bool hasInlAsm() const override;
 
  bool hasInlineAttribute() const override;
 
  bool hasInterruptReturn() const override;
 
  bool hasFramePointer() const override;
 
  bool hasLongJump() const override;
 
  bool hasManagedCode() const override;
 
  bool hasNestedTypes() const override;
 
  bool hasNoInlineAttribute() const override;
 
  bool hasNoReturnAttribute() const override;
 
  bool hasOptimizedCodeDebugInfo() const override;
 
  bool hasOverloadedOperator() const override;
 
  bool hasSEH() const override;
 
  bool hasSecurityChecks() const override;
 
  bool hasSetJump() const override;
 
  bool hasStrictGSCheck() const override;
 
  bool isAcceleratorGroupSharedLocal() const override;
 
  bool isAcceleratorPointerTagLiveRange() const override;
 
  bool isAcceleratorStubFunction() const override;
 
  bool isAggregated() const override;
 
  bool isIntroVirtualFunction() const override;
 
  bool isCVTCIL() const override;
 
  bool isConstructorVirtualBase() const override;
 
  bool isCxxReturnUdt() const override;
 
  bool isDataAligned() const override;
 
  bool isHLSLData() const override;
 
  bool isHotpatchable() const override;
 
  bool isIndirectVirtualBaseClass() const override;
 
  bool isInterfaceUdt() const override;
 
  bool isIntrinsic() const override;
 
  bool isLTCG() const override;
 
  bool isLocationControlFlowDependent() const override;
 
  bool isMSILNetmodule() const override;
 
  bool isMatrixRowMajor() const override;
 
  bool isManagedCode() const override;
 
  bool isMSILCode() const override;
 
  bool isMultipleInheritance() const override;
 
  bool isNaked() const override;
 
  bool isNested() const override;
 
  bool isOptimizedAway() const override;
 
  bool isPacked() const override;
 
  bool isPointerBasedOnSymbolValue() const override;
 
  bool isPointerToDataMember() const override;
 
  bool isPointerToMemberFunction() const override;
 
  bool isPureVirtual() const override;
 
  bool isRValueReference() const override;
 
  bool isRefUdt() const override;
 
  bool isReference() const override;
 
  bool isRestrictedType() const override;
 
  bool isReturnValue() const override;
 
  bool isSafeBuffers() const override;
 
  bool isScoped() const override;
 
  bool isSdl() const override;
 
  bool isSingleInheritance() const override;
 
  bool isSplitted() const override;
 
  bool isStatic() const override;
 
  bool hasPrivateSymbols() const override;
 
  bool isUnalignedType() const override;
 
  bool isUnreached() const override;
 
  bool isValueUdt() const override;
 
  bool isVirtual() const override;
 
  bool isVirtualBaseClass() const override;
 
  bool isVirtualInheritance() const override;
 
  bool isVolatileType() const override;
 
  bool wasInlined() const override;
 
  std::string getUnused() const override;
 
 
 
protected:
 
  NativeSession &Session;
 
  PDB_SymType Tag;
 
  SymIndexId SymbolId;
 
};
 
 
 
} // end namespace pdb
 
} // end namespace llvm
 
 
 
#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVERAWSYMBOL_H