function definition class structure changed, corresponding builders and printers fixes, fixes

This commit is contained in:
ProgramSnail 2023-07-26 13:43:14 +03:00
parent 18d7bdf5c1
commit b4ce56b5f7
13 changed files with 323 additions and 284 deletions

View file

@ -24,10 +24,10 @@ public:
private:
TypeProxy(TypeStorage &type_storage, size_t id)
: type_storage_(type_storage), id_(id) {}
: type_storage_(&type_storage), id_(id) {}
private:
TypeStorage &type_storage_;
TypeStorage *type_storage_;
size_t id_;
};
@ -35,28 +35,26 @@ private:
class Type : public Node {
public:
Type(Node node, Identifier &&identifier, bool is_on_heap = false,
bool is_optional = false, bool is_result = false)
Modifier modifier = Modifier::NONE)
: Node(node), name_(std::move(identifier)), is_on_heap_(is_on_heap),
is_optional_(is_optional), is_result_(is_result) {}
modifier_(modifier) {}
Type(Node node, const Identifier &identifier, bool is_on_heap = false,
bool is_optional = false, bool is_result = false)
Modifier modifier = Modifier::NONE)
: Node(node), name_(identifier), is_on_heap_(is_on_heap),
is_optional_(is_optional), is_result_(is_result) {}
modifier_(modifier) {}
Type(Node node, Identifier &&identifier, std::vector<TypeProxy> &&parameters,
bool is_on_heap = false, bool is_optional = false,
bool is_result = false)
bool is_on_heap = false, Modifier modifier = Modifier::NONE)
: Node(node), name_(std::move(identifier)),
parameters_(std::move(parameters)), is_on_heap_(is_on_heap),
is_optional_(is_optional), is_result_(is_result) {}
modifier_(modifier) {}
Type(Node node, const Identifier &identifier,
std::vector<TypeProxy> &&parameters, bool is_on_heap = false,
bool is_optional = false, bool is_result = false)
Modifier modifier = Modifier::NONE)
: Node(node), name_(identifier), parameters_(std::move(parameters)),
is_on_heap_(is_on_heap), is_optional_(is_optional),
is_result_(is_result) {}
is_on_heap_(is_on_heap), modifier_(modifier) {}
Identifier *get_name() { return &name_; }
@ -72,17 +70,14 @@ public:
bool is_on_heap() const { return is_on_heap_; }
bool is_optional() const { return is_optional_; }
bool is_result() const { return is_result_; }
Modifier get_modifier() const { return modifier_; }
private:
Identifier name_;
std::vector<TypeProxy> parameters_;
// or use allocator ??
bool is_on_heap_ = false;
bool is_optional_ = false;
bool is_result_ = false;
Modifier modifier_ = Modifier::NONE; // optional, result or none
};
class TypeStorage {