mirror of
https://codeberg.org/ProgramSnail/lang.git
synced 2025-12-07 07:28:45 +00:00
function definition class structure changed, corresponding builders and printers fixes, fixes
This commit is contained in:
parent
18d7bdf5c1
commit
b4ce56b5f7
13 changed files with 323 additions and 284 deletions
|
|
@ -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> &¶meters,
|
||||
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> &¶meters, 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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue