tipc
A TIP to LLVM compiler
TipType.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <ostream>
5 
6 // Forward declare the visitor to resolve circular dependency
7 class TipTypeVisitor;
8 
19 class TipType {
20 public:
21  virtual bool operator==(const TipType &other) const = 0;
22  virtual bool operator!=(const TipType &other) const = 0;
23  virtual ~TipType() = default;
24  friend std::ostream &operator<<(std::ostream &os, const TipType &obj) {
25  return obj.print(os);
26  }
27 
28  virtual void accept(TipTypeVisitor *visitor) = 0;
29 
30 protected:
31  virtual std::ostream &print(std::ostream &out) const = 0;
32 };
Base class for TIP type visitors.
Definition: TipTypeVisitor.h:24
Abstract base class of all types.
Definition: TipType.h:19
virtual void accept(TipTypeVisitor *visitor)=0
virtual std::ostream & print(std::ostream &out) const =0
virtual bool operator!=(const TipType &other) const =0
virtual ~TipType()=default
virtual bool operator==(const TipType &other) const =0
friend std::ostream & operator<<(std::ostream &os, const TipType &obj)
Definition: TipType.h:24