tipc
A TIP to LLVM compiler
TipMu.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "TipType.h"
4 #include "TipVar.h"
5 #include <string>
6 
12 class TipMu : public TipType {
13 public:
14  TipMu() = delete;
15  TipMu(std::shared_ptr<TipVar> v, std::shared_ptr<TipType> t);
16 
17  const std::shared_ptr<TipVar> &getV() const;
18  const std::shared_ptr<TipType> &getT() const;
19 
20  bool operator==(const TipType &other) const override;
21  bool operator!=(const TipType &other) const override;
22 
23  void accept(TipTypeVisitor *visitor) override;
24 
25 protected:
26  std::ostream &print(std::ostream &out) const override;
27 
28 private:
29  std::shared_ptr<TipVar> v;
30  std::shared_ptr<TipType> t;
31 };
Class representing a recursive type.
Definition: TipMu.h:12
bool operator!=(const TipType &other) const override
Definition: TipMu.cpp:21
const std::shared_ptr< TipVar > & getV() const
Definition: TipMu.cpp:9
const std::shared_ptr< TipType > & getT() const
Definition: TipMu.cpp:11
bool operator==(const TipType &other) const override
Definition: TipMu.cpp:13
void accept(TipTypeVisitor *visitor) override
Definition: TipMu.cpp:28
TipMu()=delete
std::ostream & print(std::ostream &out) const override
Definition: TipMu.cpp:23
Base class for TIP type visitors.
Definition: TipTypeVisitor.h:24
Abstract base class of all types.
Definition: TipType.h:19