blob: e6c0483cfc35176f12eca3c33e750e0f1bcc2f93 [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- 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
15namespace llvm {
16
17class MCSymbol;
18
19/// Data for a string pool entry.
20struct DwarfStringPoolEntry {
21 MCSymbol *Symbol;
22 unsigned Offset;
23 unsigned Index;
24};
25
26/// String pool entry reference.
27struct DwarfStringPoolEntryRef {
28 const StringMapEntry<DwarfStringPoolEntry> *I = nullptr;
29
30public:
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 /// Return the entire string pool entry for convenience.
45 DwarfStringPoolEntry getEntry() const { return I->getValue(); }
46
47 bool operator==(const DwarfStringPoolEntryRef &X) const { return I == X.I; }
48 bool operator!=(const DwarfStringPoolEntryRef &X) const { return I != X.I; }
49};
50
51} // end namespace llvm
52
53#endif