mini-llvm 0.1.0
Loading...
Searching...
No Matches
Constant.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <string>
6
10
11namespace mini_llvm::ir {
12
14public:
15 virtual void accept(ConstantVisitor &visitor) = 0;
16 virtual void accept(ConstantVisitor &visitor) const = 0;
17
18 std::string formatAsOperand() const override {
19 return format();
20 }
21
22protected:
23 virtual bool equals(const Constant &other) const = 0;
24
25 friend bool operator==(const Constant &lhs, const Constant &rhs);
26};
27
28inline bool operator==(const Constant &lhs, const Constant &rhs) {
29 return lhs.equals(rhs);
30}
31
32} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition ConstantVisitor.h:26
Definition Constant.h:13
friend bool operator==(const Constant &lhs, const Constant &rhs)
Definition Constant.h:28
virtual void accept(ConstantVisitor &visitor) const =0
std::string formatAsOperand() const override
Definition Constant.h:18
virtual void accept(ConstantVisitor &visitor)=0
virtual bool equals(const Constant &other) const =0
virtual std::string format() const =0
Definition Argument.h:13
bool operator==(const Constant &lhs, const Constant &rhs)
Definition Constant.h:28