mini-llvm 0.1.0
Loading...
Searching...
No Matches
I64ArrayConstant.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 explicit I64ArrayConstant(std::vector<int64_t> elements) : elements_(std::move(elements)) {}
20
21 std::vector<int64_t> &elements() & {
22 return elements_;
23 }
24
25 const std::vector<int64_t> &elements() const & {
26 return elements_;
27 }
28
29 std::vector<int64_t> &&elements() && {
30 return std::move(elements_);
31 }
32
33 void setElements(std::vector<int64_t> elements) {
34 elements_ = std::move(elements);
35 }
36
37 size_t numElements() const {
38 return elements_.size();
39 }
40
41 int size() const override {
42 return static_cast<int>(numElements()) * 8;
43 }
44
45 std::string format() const override;
46
47 void accept(ConstantVisitor &visitor) override {
48 visitor.visitI64ArrayConstant(*this);
49 }
50
51 void accept(ConstantVisitor &visitor) const override {
52 visitor.visitI64ArrayConstant(*this);
53 }
54
55private:
56 std::vector<int64_t> elements_;
57};
58
59} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition ConstantVisitor.h:24
virtual void visitI64ArrayConstant(I64ArrayConstant &C)
Definition ConstantVisitor.h:40
std::vector< int64_t > & elements() &
Definition I64ArrayConstant.h:21
void setElements(std::vector< int64_t > elements)
Definition I64ArrayConstant.h:33
std::vector< int64_t > && elements() &&
Definition I64ArrayConstant.h:29
void accept(ConstantVisitor &visitor) const override
Definition I64ArrayConstant.h:51
int size() const override
Definition I64ArrayConstant.h:41
void accept(ConstantVisitor &visitor) override
Definition I64ArrayConstant.h:47
size_t numElements() const
Definition I64ArrayConstant.h:37
const std::vector< int64_t > & elements() const &
Definition I64ArrayConstant.h:25
std::string format() const override
I64ArrayConstant(std::vector< int64_t > elements)
Definition I64ArrayConstant.h:19
Definition BasicBlock.h:22