aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-07-08 11:04:34 +0200
committerEugen Wissner <belka@caraus.de>2026-07-08 11:04:34 +0200
commitffe6097c534c82b9402bb6f0a57abeebd075e61d (patch)
tree9079255db89007046fe1446d27009df8585a154e /include
parent79521d91b2bb85652fd29f5c44279338d55c757f (diff)
downloadelna-ffe6097c534c82b9402bb6f0a57abeebd075e61d.tar.gz
Allow multiple fields with the same type
Diffstat (limited to 'include')
-rw-r--r--include/elna/boot/ast.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/include/elna/boot/ast.h b/include/elna/boot/ast.h
index b9414f0..0642d44 100644
--- a/include/elna/boot/ast.h
+++ b/include/elna/boot/ast.h
@@ -259,7 +259,7 @@ namespace elna::boot
array_type_expression(const struct position position,
type_expression *base, const std::uint32_t size);
- ~array_type_expression();
+ ~array_type_expression() override;
void accept(parser_visitor *visitor) override;
array_type_expression *is_array() override;
@@ -273,7 +273,7 @@ namespace elna::boot
public:
pointer_type_expression(const struct position position, type_expression *base);
- ~pointer_type_expression();
+ ~pointer_type_expression() override;
void accept(parser_visitor *visitor) override;
pointer_type_expression *is_pointer() override;
@@ -281,7 +281,7 @@ namespace elna::boot
type_expression& base();
};
- using field_declaration = std::pair<std::string, type_expression *>;
+ using field_declaration = std::pair<std::vector<std::string>, std::shared_ptr<type_expression>>;
class record_type_expression : public type_expression
{
@@ -289,7 +289,6 @@ namespace elna::boot
const std::vector<field_declaration> fields;
record_type_expression(const struct position position, std::vector<field_declaration>&& fields);
- ~record_type_expression();
void accept(parser_visitor *visitor) override;
record_type_expression *is_record() override;
@@ -301,7 +300,6 @@ namespace elna::boot
std::vector<field_declaration> fields;
union_type_expression(const struct position position, std::vector<field_declaration>&& fields);
- ~union_type_expression();
void accept(parser_visitor *visitor) override;
union_type_expression *is_union() override;
@@ -381,11 +379,10 @@ namespace elna::boot
using return_t = return_declaration<type_expression *>;
const return_t return_type;
- const std::vector<std::pair<std::vector<std::string>, std::shared_ptr<type_expression>>> parameters;
+ const std::vector<field_declaration> parameters;
procedure_type_expression(const struct position position,
- std::vector<std::pair<std::vector<std::string>, std::shared_ptr<type_expression>>>&& parameters,
- return_t return_type = return_t());
+ std::vector<field_declaration>&& parameters, return_t return_type = return_t());
~procedure_type_expression();
void accept(parser_visitor *visitor) override;