Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- NativeTypePointer.h - info about pointer type -------------*- C++-*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8.  
  9. #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEPOINTER_H
  10. #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEPOINTER_H
  11.  
  12. #include "llvm/DebugInfo/CodeView/TypeIndex.h"
  13. #include "llvm/DebugInfo/CodeView/TypeRecord.h"
  14. #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
  15. #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
  16. #include "llvm/DebugInfo/PDB/PDBTypes.h"
  17.  
  18. namespace llvm {
  19. namespace pdb {
  20.  
  21. class NativeTypePointer : public NativeRawSymbol {
  22. public:
  23.   // Create a pointer record for a simple type.
  24.   NativeTypePointer(NativeSession &Session, SymIndexId Id,
  25.                     codeview::TypeIndex TI);
  26.  
  27.   // Create a pointer record for a non-simple type.
  28.   NativeTypePointer(NativeSession &Session, SymIndexId Id,
  29.                     codeview::TypeIndex TI, codeview::PointerRecord PR);
  30.   ~NativeTypePointer() override;
  31.  
  32.   void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
  33.             PdbSymbolIdField RecurseIdFields) const override;
  34.  
  35.   SymIndexId getClassParentId() const override;
  36.   bool isConstType() const override;
  37.   uint64_t getLength() const override;
  38.   bool isReference() const override;
  39.   bool isRValueReference() const override;
  40.   bool isPointerToDataMember() const override;
  41.   bool isPointerToMemberFunction() const override;
  42.   SymIndexId getTypeId() const override;
  43.   bool isRestrictedType() const override;
  44.   bool isVolatileType() const override;
  45.   bool isUnalignedType() const override;
  46.  
  47.   bool isSingleInheritance() const override;
  48.   bool isMultipleInheritance() const override;
  49.   bool isVirtualInheritance() const override;
  50.  
  51. protected:
  52.   bool isMemberPointer() const;
  53.   codeview::TypeIndex TI;
  54.   std::optional<codeview::PointerRecord> Record;
  55. };
  56.  
  57. } // namespace pdb
  58. } // namespace llvm
  59.  
  60. #endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEPOINTER_H
  61.