Cthulhu  0.2.10
Cthulhu compiler collection
memory.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include "arena/arena.h"
6 #include "scan/scan.h" // IWYU pragma: keep
7 
10 
12 #define FLEX_MEMORY(prefix) \
13  inline void *prefix##alloc(size_t size, yyscan_t scanner) \
14  { \
15  scan_t *scan = yyget_extra(scanner); \
16  arena_t *arena = scan_get_arena(scan); \
17  return ARENA_MALLOC(size, "yyalloc", scan, arena); \
18  } \
19  inline void *prefix##realloc(void *ptr, size_t bytes, yyscan_t scanner) \
20  { \
21  arena_t *arena = scan_get_arena(yyget_extra(scanner)); \
22  return arena_realloc(ptr, bytes, CT_ALLOC_SIZE_UNKNOWN, arena); \
23  } \
24  inline void prefix##free(void *ptr, yyscan_t scanner) \
25  { \
26  arena_t *arena = scan_get_arena(yyget_extra(scanner)); \
27  if (ptr == NULL) \
28  { \
29  return; \
30  } \
31  arena_free(ptr, CT_ALLOC_SIZE_UNKNOWN, arena); \
32  }
33 
37