}
vertex :: #match {
- (position: Vector2) { global_renderer->push_vertex(position); },
- (position: Vector2, color: Color4) { global_renderer->push_vertex(position, color); },
+ macro (position: Vector2) {
+ gr :: global_renderer
+ gr->push_vertex(position);
+ },
+ macro (position: Vector2, color: Color4) {
+ gr :: global_renderer
+ gr->push_vertex(position, color);
+ },
}
rect :: (position: Vector2, size: Vector2, color: Color4 = .{1,1,1}) {
bh_arr_new(global_heap_allocator, s_node->members, 4);
- bh_arr(AstTyped *) struct_meta_tags=NULL;
while (parser->curr->type == '#') {
if (parser->hit_unexpected_token) return NULL;
s_node->min_size = numlit->value.i;
}
- else if (parse_possible_directive(parser, "tag")) {
- expect_token(parser, '(');
-
- AstTyped* expr = parse_expression(parser, 0);
-
- if (struct_meta_tags == NULL) bh_arr_new(global_heap_allocator, struct_meta_tags, 1);
- bh_arr_push(struct_meta_tags, expr);
-
- expect_token(parser, ')');
- }
-
else {
OnyxToken* directive_token = expect_token(parser, '#');
OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol);
}
}
+ bh_arr(AstTyped *) struct_meta_tags=NULL;
+ if (parser->curr->type == '[') {
+ expect_token(parser, '[');
+ if (struct_meta_tags == NULL) bh_arr_new(global_heap_allocator, struct_meta_tags, 1);
+
+ while (parser->curr->type != ']') {
+ if (parser->hit_unexpected_token) return s_node;
+
+ AstTyped* expr = parse_expression(parser, 0);
+ bh_arr_push(struct_meta_tags, expr);
+
+ if (parser->curr->type != ']')
+ expect_token(parser, ',');
+ }
+
+ expect_token(parser, ']');
+ }
+
s_node->meta_tags = struct_meta_tags;
expect_token(parser, '{');
} else {
bh_arr(AstTyped *) meta_tags=NULL;
while (parser->curr->type == '[') {
- expect_token(parser, '[');
+ if (meta_tags == NULL) bh_arr_new(global_heap_allocator, meta_tags, 1);
- AstTyped* expr = parse_expression(parser, 0);
+ expect_token(parser, '[');
+ while (parser->curr->type != ']') {
+ AstTyped* expr = parse_expression(parser, 0);
+ bh_arr_push(meta_tags, expr);
- if (meta_tags == NULL) bh_arr_new(global_heap_allocator, meta_tags, 1);
- bh_arr_push(meta_tags, expr);
+ if (parser->curr->type != ']') {
+ expect_token(parser, ',');
+ }
+ }
expect_token(parser, ']');
}