--- /dev/null
+package core.alloc.log
+
+Allocation_Action_Strings := str.[
+ " alloc",
+ "resize",
+ " free",
+];
+
+#private_file
+logging_allocator_proc :: (data: rawptr, aa: AllocationAction, size: u32, align: u32, oldptr: rawptr) -> rawptr {
+ allocator := cast(^Allocator) data;
+ res := allocator.func(allocator.data, aa, size, align, oldptr);
+
+ use package core { printf }
+ printf("%s with size %i, align %i, oldptr %p returns %p\n",
+ Allocation_Action_Strings[cast(u32) aa], size, align, oldptr, res);
+
+ return res;
+}
+
+logging_allocator :: (alloc: ^Allocator) -> Allocator {
+ return Allocator.{
+ func = logging_allocator_proc,
+ data = alloc,
+ };
+}
\ No newline at end of file
&& token_after_paren->type != Token_Type_Empty_Block)
return 0;
- b32 hit_colon = 0;
+ b32 is_params = (parser->curr + 1) == matching_paren;
OnyxToken* tmp_token = parser->curr;
- while (tmp_token < matching_paren) {
- if (tmp_token->type == ':') {
- hit_colon = 1;
- break;
- }
+ while (!is_params && tmp_token < matching_paren) {
+ if (tmp_token->type == ':') is_params = 1;
tmp_token++;
}
- if (!hit_colon) return 0;
+ if (!is_params) return 0;
OnyxToken* proc_token = parser->curr;
AstFunction* func_node = parse_function_definition(parser, proc_token);