mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Constant.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <concepts>
6
#include <format>
7
#include <string>
8
9
#include "
mini-llvm/mir/ConstantVisitor.h
"
10
#include "
mini-llvm/utils/Compiler.h
"
11
12
namespace
mini_llvm::mir
{
13
14
class
MINI_LLVM_EXPORT
Constant
{
15
public
:
16
virtual
~Constant
() =
default
;
17
18
Constant
() =
default
;
19
20
Constant
(
const
Constant
&) =
delete
;
21
Constant
&
operator=
(
const
Constant
&) =
delete
;
22
23
Constant
(
Constant
&&) =
delete
;
24
Constant
&
operator=
(
Constant
&&) =
delete
;
25
26
virtual
int
size
()
const
= 0;
27
virtual
std::string
format
()
const
= 0;
28
virtual
void
accept
(
ConstantVisitor
&visitor) = 0;
29
virtual
void
accept
(
ConstantVisitor
&visitor)
const
= 0;
30
};
31
32
}
// namespace mini_llvm::mir
33
34
template
<
typename
ConstantT>
35
requires
std::derived_from<ConstantT, mini_llvm::mir::Constant>
36
struct
std::formatter<ConstantT> {
37
constexpr
auto
parse
(std::format_parse_context &ctx) {
38
return
ctx.begin();
39
}
40
41
template
<
typename
FormatContext>
42
auto
format
(
const
ConstantT &C, FormatContext &ctx)
const
{
43
return
std::format_to(ctx.out(),
"{}"
, C.format());
44
}
45
};
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
mini_llvm::mir::ConstantVisitor
Definition
ConstantVisitor.h:24
mini_llvm::mir::Constant::Constant
Constant()=default
mini_llvm::mir::Constant::accept
virtual void accept(ConstantVisitor &visitor) const =0
mini_llvm::mir::Constant::operator=
Constant & operator=(const Constant &)=delete
mini_llvm::mir::Constant::Constant
Constant(Constant &&)=delete
mini_llvm::mir::Constant::Constant
Constant(const Constant &)=delete
mini_llvm::mir::Constant::size
virtual int size() const =0
mini_llvm::mir::Constant::~Constant
virtual ~Constant()=default
mini_llvm::mir::Constant::accept
virtual void accept(ConstantVisitor &visitor)=0
mini_llvm::mir::Constant::operator=
Constant & operator=(Constant &&)=delete
mini_llvm::mir::Constant::format
virtual std::string format() const =0
ConstantVisitor.h
mini_llvm::mir
Definition
BasicBlock.h:22
std::formatter< ConstantT >::parse
constexpr auto parse(std::format_parse_context &ctx)
Definition
Constant.h:37
std::formatter< ConstantT >::format
auto format(const ConstantT &C, FormatContext &ctx) const
Definition
Constant.h:42
include
mini-llvm
mir
Constant.h
Generated by
1.17.0