combine functions fixes

This commit is contained in:
ProgramSnail 2023-08-02 13:10:16 +03:00
parent 5e70f0015f
commit 4714a05467
5 changed files with 117 additions and 44 deletions

View file

@ -56,10 +56,14 @@ public:
: Node(node), name_(identifier), parameters_(std::move(parameters)),
is_on_heap_(is_on_heap), modifier_(modifier) {}
//
Identifier *get_name() { return &name_; }
const Identifier *get_name() const { return &name_; }
//
size_t get_parametrs_size() const { return parameters_.size(); }
Type *get_parameter(size_t id) { return parameters_.at(id).get(); }
@ -68,10 +72,34 @@ public:
return parameters_.at(id).get();
}
//
bool is_on_heap() const { return is_on_heap_; }
Modifier get_modifier() const { return modifier_; }
//
bool operator==(const Type &other_type) const {
if (name_ != other_type.name_ || is_on_heap_ != other_type.is_on_heap_ ||
modifier_ != other_type.modifier_ ||
parameters_.size() != other_type.parameters_.size()) {
return false;
}
for (size_t i = 0; i < parameters_.size(); ++i) {
if (*parameters_[i].get() != *other_type.parameters_[i].get()) {
return false;
}
}
return true;
}
bool operator!=(const Type &other_type) const {
return !(*this == other_type);
}
private:
Identifier name_;
std::vector<TypeProxy> parameters_;