mini-llvm 0.1.0
Loading...
Searching...
No Matches
NullPtrConstant.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 <typeinfo>
8
12#include "mini-llvm/ir/Type.h"
14#include "mini-llvm/ir/Value.h"
15
16namespace mini_llvm::ir {
17
18class NullPtrConstant final : public PointerConstant {
19public:
20 void accept(ConstantVisitor &visitor) override {
21 visitor.visitNullPtrConstant(*this);
22 }
23
24 void accept(ConstantVisitor &visitor) const override {
25 visitor.visitNullPtrConstant(*this);
26 }
27
28 std::unique_ptr<Type> type() const override {
29 return std::make_unique<Ptr>();
30 }
31
32 std::string format() const override {
33 return "null";
34 }
35
36 std::unique_ptr<Value> clone() const override {
37 return std::make_unique<NullPtrConstant>();
38 }
39
40protected:
41 bool equals(const Constant &other) const override {
42 return typeid(*this) == typeid(other);
43 }
44};
45
46} // namespace mini_llvm::ir
Definition ConstantVisitor.h:26
virtual void visitNullPtrConstant(NullPtrConstant &C)
Definition ConstantVisitor.h:48
Definition Constant.h:13
Definition NullPtrConstant.h:18
void accept(ConstantVisitor &visitor) override
Definition NullPtrConstant.h:20
std::string format() const override
Definition NullPtrConstant.h:32
std::unique_ptr< Value > clone() const override
Definition NullPtrConstant.h:36
std::unique_ptr< Type > type() const override
Definition NullPtrConstant.h:28
bool equals(const Constant &other) const override
Definition NullPtrConstant.h:41
void accept(ConstantVisitor &visitor) const override
Definition NullPtrConstant.h:24
Definition PointerConstant.h:10
Definition Argument.h:13