mini-llvm 0.1.0
Loading...
Searching...
No Matches
Module.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <format>
6#include <iterator>
7#include <list>
8#include <string>
9#include <utility>
10
13
14namespace mini_llvm::mc {
15
17 using GlobalValueList = std::list<GlobalValue>;
18
19public:
20 using iterator = GlobalValueList::iterator;
21 using const_iterator = GlobalValueList::const_iterator;
22 using reverse_iterator = GlobalValueList::reverse_iterator;
23 using const_reverse_iterator = GlobalValueList::const_reverse_iterator;
24
25 Module() = default;
26 Module(const Module &) = delete;
27 Module(Module &&) = default;
28 Module &operator=(const Module &) = delete;
29 Module &operator=(Module &&) = default;
30
32 return globalValues_.begin();
33 }
34
36 return globalValues_.begin();
37 }
38
40 return globalValues_.end();
41 }
42
44 return globalValues_.end();
45 }
46
48 return globalValues_.rbegin();
49 }
50
52 return globalValues_.rbegin();
53 }
54
56 return globalValues_.rend();
57 }
58
60 return globalValues_.rend();
61 }
62
64
66 return add(begin(), std::move(G));
67 }
68
70 return add(end(), std::move(G));
71 }
72
74
75 void removeFirst() {
76 remove(begin());
77 }
78
79 void removeLast() {
80 remove(std::prev(end()));
81 }
82
83 void clear();
84
85 std::string format() const;
86
87private:
88 GlobalValueList globalValues_;
89};
90
91} // namespace mini_llvm::mc
92
93template <>
94struct std::formatter<mini_llvm::mc::Module> {
95 constexpr auto parse(std::format_parse_context &ctx) {
96 return ctx.begin();
97 }
98
99 template <typename FormatContext>
100 auto format(const mini_llvm::mc::Module &I, FormatContext &ctx) const {
101 return std::format_to(ctx.out(), "{}", I.format());
102 }
103};
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition GlobalValue.h:21
Definition Module.h:16
const_reverse_iterator rbegin() const
Definition Module.h:51
reverse_iterator rbegin()
Definition Module.h:47
GlobalValue & prepend(GlobalValue G)
Definition Module.h:65
void removeFirst()
Definition Module.h:75
reverse_iterator rend()
Definition Module.h:55
Module & operator=(Module &&)=default
GlobalValue & add(const_iterator pos, GlobalValue G)
Module(const Module &)=delete
const_reverse_iterator rend() const
Definition Module.h:59
const_iterator end() const
Definition Module.h:43
Module(Module &&)=default
GlobalValue & append(GlobalValue G)
Definition Module.h:69
iterator begin()
Definition Module.h:31
const_iterator begin() const
Definition Module.h:35
void removeLast()
Definition Module.h:79
Module & operator=(const Module &)=delete
std::string format() const
GlobalValueList::const_iterator const_iterator
Definition Module.h:21
iterator end()
Definition Module.h:39
GlobalValueList::reverse_iterator reverse_iterator
Definition Module.h:22
GlobalValueList::iterator iterator
Definition Module.h:20
void remove(const_iterator pos)
GlobalValueList::const_reverse_iterator const_reverse_iterator
Definition Module.h:23
Definition Directive.h:8
Definition GraphColoringAllocator.h:13
constexpr auto parse(std::format_parse_context &ctx)
Definition Module.h:95
auto format(const mini_llvm::mc::Module &I, FormatContext &ctx) const
Definition Module.h:100