Home | History | Annotate | Download | only in CodeGen
      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;
     32   explicit DwarfStringPoolEntryRef(
     33       const StringMapEntry<DwarfStringPoolEntry> &I)
     34       : I(&I) {}
     35 
     36   explicit operator bool() const { return I; }
     37   MCSymbol *getSymbol() const {
     38     assert(I->second.Symbol && "No symbol available!");
     39     return I->second.Symbol;
     40   }
     41   unsigned getOffset() const { return I->second.Offset; }
     42   unsigned getIndex() const { return I->second.Index; }
     43   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