mini-llvm 0.1.0
Loading...
Searching...
No Matches
TypeVisitor.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstdlib>
6#include <utility>
7
9
10namespace mini_llvm::ir {
11
12class ArrayType;
13class BasicBlockType;
14class Double;
15class Float;
16class FunctionType;
17class I1;
18class I16;
19class I32;
20class I64;
21class I8;
22class Ptr;
23class Void;
24
26public:
27 virtual ~TypeVisitor() = default;
28
29 TypeVisitor() = default;
30
31 TypeVisitor(const TypeVisitor &) = delete;
32 TypeVisitor &operator=(const TypeVisitor &) = delete;
33
36
37 virtual void visitArrayType(ArrayType &type) { visitArrayType(std::as_const(type)); }
38 virtual void visitBasicBlockType(BasicBlockType &type) { visitBasicBlockType(std::as_const(type)); }
39 virtual void visitDouble(Double &type) { visitDouble(std::as_const(type)); }
40 virtual void visitFloat(Float &type) { visitFloat(std::as_const(type)); }
41 virtual void visitFunctionType(FunctionType &type) { visitFunctionType(std::as_const(type)); }
42 virtual void visitI1(I1 &type) { visitI1(std::as_const(type)); }
43 virtual void visitI16(I16 &type) { visitI16(std::as_const(type)); }
44 virtual void visitI32(I32 &type) { visitI32(std::as_const(type)); }
45 virtual void visitI64(I64 &type) { visitI64(std::as_const(type)); }
46 virtual void visitI8(I8 &type) { visitI8(std::as_const(type)); }
47 virtual void visitPtr(Ptr &type) { visitPtr(std::as_const(type)); }
48 virtual void visitVoid(Void &type) { visitVoid(std::as_const(type)); }
49
50 virtual void visitArrayType(const ArrayType &) { abort(); }
51 virtual void visitBasicBlockType(const BasicBlockType &) { abort(); }
52 virtual void visitDouble(const Double &) { abort(); }
53 virtual void visitFloat(const Float &) { abort(); }
54 virtual void visitFunctionType(const FunctionType &) { abort(); }
55 virtual void visitI1(const I1 &) { abort(); }
56 virtual void visitI16(const I16 &) { abort(); }
57 virtual void visitI32(const I32 &) { abort(); }
58 virtual void visitI64(const I64 &) { abort(); }
59 virtual void visitI8(const I8 &) { abort(); }
60 virtual void visitPtr(const Ptr &) { abort(); }
61 virtual void visitVoid(const Void &) { abort(); }
62};
63
64} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition ArrayType.h:20
Definition BasicBlockType.h:17
Definition Double.h:20
Definition Float.h:20
Definition FunctionType.h:22
Definition I16.h:18
Definition I1.h:19
Definition I32.h:18
Definition I64.h:19
Definition I8.h:19
Definition Ptr.h:20
TypeVisitor(TypeVisitor &&)=delete
virtual void visitFloat(const Float &)
Definition TypeVisitor.h:53
TypeVisitor & operator=(const TypeVisitor &)=delete
virtual void visitFunctionType(FunctionType &type)
Definition TypeVisitor.h:41
virtual void visitFunctionType(const FunctionType &)
Definition TypeVisitor.h:54
virtual void visitArrayType(ArrayType &type)
Definition TypeVisitor.h:37
virtual void visitDouble(Double &type)
Definition TypeVisitor.h:39
virtual void visitI64(I64 &type)
Definition TypeVisitor.h:45
virtual void visitArrayType(const ArrayType &)
Definition TypeVisitor.h:50
virtual void visitI16(const I16 &)
Definition TypeVisitor.h:56
virtual void visitBasicBlockType(BasicBlockType &type)
Definition TypeVisitor.h:38
virtual void visitPtr(const Ptr &)
Definition TypeVisitor.h:60
TypeVisitor & operator=(TypeVisitor &&)=delete
TypeVisitor(const TypeVisitor &)=delete
virtual void visitI32(I32 &type)
Definition TypeVisitor.h:44
virtual void visitI16(I16 &type)
Definition TypeVisitor.h:43
virtual void visitI8(I8 &type)
Definition TypeVisitor.h:46
virtual ~TypeVisitor()=default
virtual void visitBasicBlockType(const BasicBlockType &)
Definition TypeVisitor.h:51
virtual void visitVoid(Void &type)
Definition TypeVisitor.h:48
virtual void visitFloat(Float &type)
Definition TypeVisitor.h:40
virtual void visitI1(I1 &type)
Definition TypeVisitor.h:42
virtual void visitVoid(const Void &)
Definition TypeVisitor.h:61
virtual void visitI1(const I1 &)
Definition TypeVisitor.h:55
virtual void visitPtr(Ptr &type)
Definition TypeVisitor.h:47
virtual void visitI32(const I32 &)
Definition TypeVisitor.h:57
virtual void visitI64(const I64 &)
Definition TypeVisitor.h:58
virtual void visitDouble(const Double &)
Definition TypeVisitor.h:52
virtual void visitI8(const I8 &)
Definition TypeVisitor.h:59
Definition Void.h:18
Definition Argument.h:13