19fbbff039992706c6a0c06ab9c85f331ddb0ada
[oota-llvm.git] / include / llvm / CodeGen / DwarfStringPoolEntry.h
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 { return I->second.Symbol; }
38   unsigned getOffset() const { return I->second.Offset; }
39   unsigned getIndex() const { return I->second.Index; }
40   StringRef getString() const { return I->first(); }
41 };
42
43 } // end namespace llvm
44
45 #endif