diff options
Diffstat (limited to 'src/source.cc')
| -rw-r--r-- | src/source.cc | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/src/source.cc b/src/source.cc index 02dd42e..e1a0710 100644 --- a/src/source.cc +++ b/src/source.cc @@ -67,29 +67,19 @@ void buffer_deinit(Buffer* buffer) { deallocate(buffer->allocator, (u8*)buffer); } -struct Buffer_Manager { +struct Buffer_Stack { Link* stack; - Array<Buffer*> buffers; }; -#define buffer_manager_init(allocator) \ - Buffer_Manager { nullptr, array_init(Buffer*, allocator) } - -bool buffer_manager_push(Buffer_Manager* manager, Buffer* b) { +void buffer_stack_push(Buffer_Stack* manager, Buffer* b) { assert_neq(manager, nullptr); assert_neq(b, nullptr); - bool ret = array_push(&manager->buffers, b); - if (!ret) return false; - - b = *array_last(&manager->buffers); if (manager->stack != nullptr) link_after(manager->stack, &b->link); - manager->stack = &b->link; - return true; } -bool buffer_manager_pop(Buffer_Manager* manager, Buffer** b) { +bool buffer_stack_pop(Buffer_Stack* manager, Buffer** b) { assert_neq(manager, nullptr); assert_neq(b, nullptr); @@ -106,9 +96,4 @@ bool buffer_manager_pop(Buffer_Manager* manager, Buffer** b) { return true; } -void buffer_manager_deinit(Buffer_Manager* manager) { - assert_neq(manager, nullptr); - array_deinit(&manager->buffers); -} - #endif |
