mini-llvm 0.1.0
Loading...
Searching...
No Matches
PtrArrayConstant.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstddef>
6#include <cstdint>
7#include <string>
8#include <utility>
9#include <vector>
10
14
15namespace mini_llvm::mir {
16
18public:
19 PtrArrayConstant(int ptrSize, std::vector<std::pair<GlobalValue *, int64_t>> elements)
20 : ptrSize_(ptrSize), elements_(std::move(elements)) {}
21
22 int ptrSize() const {
23 return ptrSize_;
24 }
25
26 std::vector<std::pair<GlobalValue *, int64_t>> &elements() & {
27 return elements_;
28 }
29
30 const std::vector<std::pair<GlobalValue *, int64_t>> &elements() const & {
31 return elements_;
32 }
33
34 std::vector<std::pair<GlobalValue *, int64_t>> &&elements() && {
35 return std::move(elements_);
36 }
37
38 void setElements(std::vector<std::pair<GlobalValue *, int64_t>> elements) {
39 elements_ = std::move(elements);
40 }
41
42 size_t numElements() const {
43 return elements_.size();
44 }
45
46 int size() const override {
47 return static_cast<int>(numElements()) * ptrSize_;
48 }
49
50 std::string format() const override;
51
52 void accept(ConstantVisitor &visitor) override {
53 visitor.visitPtrArrayConstant(*this);
54 }
55
56 void accept(ConstantVisitor &visitor) const override {
57 visitor.visitPtrArrayConstant(*this);
58 }
59
60private:
61 int ptrSize_;
62 std::vector<std::pair<GlobalValue *, int64_t>> elements_;
63};
64
65} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition ConstantVisitor.h:24
virtual void visitPtrArrayConstant(PtrArrayConstant &C)
Definition ConstantVisitor.h:44
std::vector< std::pair< GlobalValue *, int64_t > > & elements() &
Definition PtrArrayConstant.h:26
int ptrSize() const
Definition PtrArrayConstant.h:22
const std::vector< std::pair< GlobalValue *, int64_t > > & elements() const &
Definition PtrArrayConstant.h:30
void accept(ConstantVisitor &visitor) const override
Definition PtrArrayConstant.h:56
void accept(ConstantVisitor &visitor) override
Definition PtrArrayConstant.h:52
PtrArrayConstant(int ptrSize, std::vector< std::pair< GlobalValue *, int64_t > > elements)
Definition PtrArrayConstant.h:19
int size() const override
Definition PtrArrayConstant.h:46
void setElements(std::vector< std::pair< GlobalValue *, int64_t > > elements)
Definition PtrArrayConstant.h:38
size_t numElements() const
Definition PtrArrayConstant.h:42
std::vector< std::pair< GlobalValue *, int64_t > > && elements() &&
Definition PtrArrayConstant.h:34
std::string format() const override
Definition BasicBlock.h:22