1 //===- llvm/CodeGen/DwarfStringPoolEntry.h - String pool entry --*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_CODEGEN_DWARFSTRINGPOOLENTRY_H 11 #define LLVM_CODEGEN_DWARFSTRINGPOOLENTRY_H 12 13 #include "llvm/ADT/StringMap.h" 14 15 namespace llvm { 16 17 class MCSymbol; 18 19 /// Data for a string pool entry. 20 struct DwarfStringPoolEntry { 21 MCSymbol *Symbol; 22 unsigned Offset; 23 unsigned Index; 24 }; 25 26 /// String pool entry reference. 27 struct DwarfStringPoolEntryRef { 28 const StringMapEntry<DwarfStringPoolEntry> *I = nullptr; 29 30 public: 31 DwarfStringPoolEntryRef() = default; DwarfStringPoolEntryRefDwarfStringPoolEntryRef32 explicit DwarfStringPoolEntryRef( 33 const StringMapEntry<DwarfStringPoolEntry> &I) 34 : I(&I) {} 35 36 explicit operator bool() const { return I; } getSymbolDwarfStringPoolEntryRef37 MCSymbol *getSymbol() const { 38 assert(I->second.Symbol && "No symbol available!"); 39 return I->second.Symbol; 40 } getOffsetDwarfStringPoolEntryRef41 unsigned getOffset() const { return I->second.Offset; } getIndexDwarfStringPoolEntryRef42 unsigned getIndex() const { return I->second.Index; } getStringDwarfStringPoolEntryRef43 StringRef getString() const { return I->first(); } 44 45 bool operator==(const DwarfStringPoolEntryRef &X) const { return I == X.I; } 46 bool operator!=(const DwarfStringPoolEntryRef &X) const { return I != X.I; } 47 }; 48 49 } // end namespace llvm 50 51 #endif 52