summaryrefslogtreecommitdiff
path: root/src/source.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/source.cc')
-rw-r--r--src/source.cc21
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