summaryrefslogtreecommitdiff
path: root/include/llvm/MC/MCContext.h
blob: 3c2addf58c52c5924a4b10998f1f5a097ce34719 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//===- MCContext.h - Machine Code Context -----------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_MC_MCCONTEXT_H
#define LLVM_MC_MCCONTEXT_H

namespace llvm {
  class MCAtom;
  class MCImm;
  class MCSection;
  class MCSymbol;

  /// MCContext - Context object for machine code objects.
  class MCContext {
    MCContext(const MCContext&); // DO NOT IMPLEMENT
    MCContext &operator=(const MCContext&); // DO NOT IMPLEMENT

  public:
    MCContext();
    ~MCContext();

    MCSection *GetSection(const char *Name);
    MCAtom *CreateAtom(MCSection *Section);
    MCSymbol *CreateSymbol(MCAtom *Atom,
                           const char *Name,
                           bool IsTemporary);
    MCSymbol *LookupSymbol(const char *Name) const;

    void SetSymbolValue(MCSymbol *Sym, const MCImm &Value);
    const MCImm &GetSymbolValue(MCSymbol *Sym) const;
  };

} // end namespace llvm

#endif