mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
GlobalVar.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <memory>
6
#include <string>
7
#include <utility>
8
9
#include "
mini-llvm/common/Linkage.h
"
10
#include "
mini-llvm/mir/Constant.h
"
11
#include "
mini-llvm/mir/GlobalValue.h
"
12
#include "
mini-llvm/utils/Compiler.h
"
13
14
namespace
mini_llvm::mir
{
15
16
class
MINI_LLVM_EXPORT
GlobalVar
final :
public
GlobalValue
{
17
public
:
18
GlobalVar
(std::string
name
,
19
Linkage
linkage
,
20
bool
isConstant
,
21
int
alignment
,
22
std::unique_ptr<Constant>
initializer
)
23
: name_(std::move(
name
)),
24
linkage_(
linkage
),
25
isConstant_(
isConstant
),
26
alignment_(
alignment
),
27
initializer_(std::move(
initializer
)) {}
28
29
GlobalVar
(std::string
name
,
Linkage
linkage
)
30
: name_(std::move(
name
)),
31
linkage_(
linkage
),
32
isConstant_(false),
33
alignment_(0),
34
initializer_(nullptr) {}
35
36
GlobalVar
(
const
GlobalVar
&&) =
delete
;
37
GlobalVar
(
GlobalVar
&&) =
delete
;
38
GlobalVar
&
operator=
(
const
GlobalVar
&&) =
delete
;
39
GlobalVar
&
operator=
(
GlobalVar
&&) =
delete
;
40
41
std::string
name
()
const override
{
42
return
name_;
43
}
44
45
void
setName
(std::string
name
) {
46
name_ = std::move(
name
);
47
}
48
49
Linkage
linkage
()
const override
{
50
return
linkage_;
51
}
52
53
void
setLinkage
(
Linkage
linkage
) {
54
linkage_ =
linkage
;
55
}
56
57
bool
isConstant
()
const
{
58
return
isConstant_;
59
}
60
61
void
setConstant
(
bool
isConstant
) {
62
isConstant_ =
isConstant
;
63
}
64
65
int
alignment
()
const
{
66
return
alignment_;
67
}
68
69
void
setAlignment
(
int
alignment
) {
70
alignment_ =
alignment
;
71
}
72
73
bool
isDeclaration
()
const
{
74
return
!initializer_;
75
}
76
77
Constant
&
initializer
() {
78
return
*initializer_;
79
}
80
81
const
Constant
&
initializer
()
const
{
82
return
*initializer_;
83
}
84
85
void
setInitializer
(std::unique_ptr<Constant>
initializer
) {
86
initializer_ = std::move(
initializer
);
87
}
88
89
std::string
format
()
const override
;
90
91
private
:
92
std::string name_;
93
Linkage
linkage_;
94
bool
isConstant_;
95
int
alignment_;
96
std::unique_ptr<Constant> initializer_;
97
};
98
99
}
// namespace mini_llvm::mir
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
Linkage.h
mini_llvm::mir::Constant
Definition
Constant.h:14
mini_llvm::mir::GlobalValue::GlobalValue
GlobalValue()=default
mini_llvm::mir::GlobalVar::GlobalVar
GlobalVar(std::string name, Linkage linkage, bool isConstant, int alignment, std::unique_ptr< Constant > initializer)
Definition
GlobalVar.h:18
mini_llvm::mir::GlobalVar::format
std::string format() const override
mini_llvm::mir::GlobalVar::setAlignment
void setAlignment(int alignment)
Definition
GlobalVar.h:69
mini_llvm::mir::GlobalVar::linkage
Linkage linkage() const override
Definition
GlobalVar.h:49
mini_llvm::mir::GlobalVar::GlobalVar
GlobalVar(const GlobalVar &&)=delete
mini_llvm::mir::GlobalVar::setName
void setName(std::string name)
Definition
GlobalVar.h:45
mini_llvm::mir::GlobalVar::alignment
int alignment() const
Definition
GlobalVar.h:65
mini_llvm::mir::GlobalVar::initializer
Constant & initializer()
Definition
GlobalVar.h:77
mini_llvm::mir::GlobalVar::isDeclaration
bool isDeclaration() const
Definition
GlobalVar.h:73
mini_llvm::mir::GlobalVar::operator=
GlobalVar & operator=(GlobalVar &&)=delete
mini_llvm::mir::GlobalVar::name
std::string name() const override
Definition
GlobalVar.h:41
mini_llvm::mir::GlobalVar::initializer
const Constant & initializer() const
Definition
GlobalVar.h:81
mini_llvm::mir::GlobalVar::setLinkage
void setLinkage(Linkage linkage)
Definition
GlobalVar.h:53
mini_llvm::mir::GlobalVar::setInitializer
void setInitializer(std::unique_ptr< Constant > initializer)
Definition
GlobalVar.h:85
mini_llvm::mir::GlobalVar::operator=
GlobalVar & operator=(const GlobalVar &&)=delete
mini_llvm::mir::GlobalVar::setConstant
void setConstant(bool isConstant)
Definition
GlobalVar.h:61
mini_llvm::mir::GlobalVar::GlobalVar
GlobalVar(GlobalVar &&)=delete
mini_llvm::mir::GlobalVar::GlobalVar
GlobalVar(std::string name, Linkage linkage)
Definition
GlobalVar.h:29
mini_llvm::mir::GlobalVar::isConstant
bool isConstant() const
Definition
GlobalVar.h:57
Constant.h
GlobalValue.h
mini_llvm::mir
Definition
BasicBlock.h:22
mini_llvm::Linkage
Linkage
Definition
Linkage.h:7
include
mini-llvm
mir
GlobalVar.h
Generated by
1.17.0