Cthulhu  0.2.10
Cthulhu compiler collection
arena.cpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: GPL-3.0-only
2 #include "stdafx.hpp" // IWYU pragma: keep
3 
4 #include "editor/arena.hpp"
5 
6 void *IArena::wrap_malloc(size_t size, void *user)
7 {
8  IArena *arena = static_cast<IArena*>(user);
9  return arena->malloc(size);
10 }
11 
12 void *IArena::wrap_realloc(void *ptr, size_t new_size, size_t old_size, void *user)
13 {
14  IArena *arena = static_cast<IArena*>(user);
15  return arena->realloc(ptr, new_size, old_size);
16 }
17 
18 void IArena::wrap_free(void *ptr, size_t size, void *user)
19 {
20  IArena *arena = static_cast<IArena*>(user);
21  arena->free(ptr, size);
22 }
23 
24 void IArena::wrap_rename(const void *ptr, const char *name, void *user)
25 {
26  IArena *arena = static_cast<IArena*>(user);
27  arena->rename(ptr, name);
28 }
29 
30 void IArena::wrap_reparent(const void *ptr, const void *parent, void *user)
31 {
32  IArena *arena = static_cast<IArena*>(user);
33  arena->reparent(ptr, parent);
34 }
35 
36 IArena::IArena(const char *id)
37 {
38  arena_t arena = {
39  .name = id,
40  .fn_malloc = wrap_malloc,
41  .fn_realloc = wrap_realloc,
42  .fn_free = wrap_free,
43  .fn_rename = wrap_rename,
44  .fn_reparent = wrap_reparent,
45  .user = this,
46  };
47 
48  impl = arena;
49 }
Definition: arena.hpp:11
virtual void reparent(CTX_UNUSED const void *ptr, CTX_UNUSED const void *new_parent)
Definition: arena.hpp:34
virtual void free(void *ptr, size_t size)=0
virtual void rename(CTX_UNUSED const void *ptr, CTX_UNUSED const char *new_name)
Definition: arena.hpp:33
virtual void * malloc(size_t size)=0
virtual void * realloc(void *ptr, size_t new_size, size_t old_size)=0
IArena(const char *id)
Definition: arena.cpp:36
CT_NODISCARD size_t size
Definition: scan.h:128
an allocator object
Definition: arena.h:86