| |
| #ifndef UPB_INT_H_ |
| #define UPB_INT_H_ |
| |
| #include "upb/upb.h" |
| |
| struct mem_block; |
| typedef struct mem_block mem_block; |
| |
| struct upb_arena { |
| _upb_arena_head head; |
| uint32_t *cleanups; |
| |
| /* Allocator to allocate arena blocks. We are responsible for freeing these |
| * when we are destroyed. */ |
| upb_alloc *block_alloc; |
| uint32_t last_size; |
| |
| /* When multiple arenas are fused together, each arena points to a parent |
| * arena (root points to itself). The root tracks how many live arenas |
| * reference it. */ |
| uint32_t refcount; /* Only used when a->parent == a */ |
| struct upb_arena *parent; |
| |
| /* Linked list of blocks to free/cleanup. */ |
| mem_block *freelist, *freelist_tail; |
| }; |
| |
| #endif /* UPB_INT_H_ */ |