tipc
A TIP to LLVM compiler
TipRecord.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "TipCons.h"
4 #include "TipType.h"
5 #include <ostream>
6 #include <string>
7 #include <vector>
8 
14 class TipRecord : public TipCons {
15 public:
16  TipRecord() = delete;
17  TipRecord(std::vector<std::shared_ptr<TipType>> inits,
18  std::vector<std::string> names);
19 
20  std::vector<std::string> const &getNames() const;
21  std::vector<std::shared_ptr<TipType>> &getInits();
22  bool operator==(const TipType &other) const override;
23  bool operator!=(const TipType &other) const override;
24 
25  void accept(TipTypeVisitor *visitor) override;
26 
27 protected:
28  std::ostream &print(std::ostream &out) const override;
29 
30 private:
31  std::vector<std::string> const names;
32 };
Abstract base class for all proper types.
Definition: TipCons.h:14
A proper type representing a record.
Definition: TipRecord.h:14
void accept(TipTypeVisitor *visitor) override
Definition: TipRecord.cpp:54
TipRecord()=delete
std::vector< std::shared_ptr< TipType > > & getInits()
Definition: TipRecord.cpp:48
bool operator!=(const TipType &other) const override
Definition: TipRecord.cpp:44
std::vector< std::string > const & getNames() const
Definition: TipRecord.cpp:52
bool operator==(const TipType &other) const override
Definition: TipRecord.cpp:25
std::ostream & print(std::ostream &out) const override
Definition: TipRecord.cpp:8
Base class for TIP type visitors.
Definition: TipTypeVisitor.h:24
Abstract base class of all types.
Definition: TipType.h:19