diff options
author | talha <sarcxd@gmail.com> | 2025-03-06 10:37:36 +0500 |
---|---|---|
committer | talha <sarcxd@gmail.com> | 2025-03-06 10:37:36 +0500 |
commit | 23cc1a7d8c5ae6a397071763d0326990868c37af (patch) | |
tree | 0eb8fd47d678c57ec43c22ed104997c10c900260 /source/memory/memory.h | |
parent | 1d0bff7b975a63ef9047f16acdb2ef03123772d9 (diff) |
Making project work with clangd:
- Moved a lot of items into separate header files
- Still compiling everything as a single translation unit (but maybe a
heavier translation unit [if that is possible])
- setup compile_flags, a way to use clangd without using a build system
- stuff like clangd and cmake don't work well with unity builds, so I
avoid jumping through hoops
Diffstat (limited to 'source/memory/memory.h')
-rwxr-xr-x | source/memory/memory.h | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/source/memory/memory.h b/source/memory/memory.h deleted file mode 100755 index e402c0b..0000000 --- a/source/memory/memory.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef AMR_MEMORY_H -#define AMR_MEMORY_H - -#include <stddef.h> -#include <stdint.h> -#include <assert.h> -#include <string.h> - -#ifndef AMR_TYPES_H -#define AMR_TYPES_H - -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; - -typedef u8 b8; - -#endif // AMR_TYPES_H - - -#ifndef DEFAULT_ALIGNMENT -#define DEFAULT_ALIGNMENT (2*sizeof(void *)) -#endif - -// @todo: build a logging mechanism for handling errors -// maybe read about that - -enum MemStatus { MEM_OK=0, MEM_OUT_OF_BOUNDS, MEM_FULL }; - -struct ResVoid { - enum MemStatus status; - size_t bytes_count; - void* memory; -}; - -b8 is_power_of_two(uintptr_t x); -uintptr_t fast_modulo(uintptr_t p, uintptr_t a); -uintptr_t align_forward(uintptr_t ptr, size_t align); - -//=========================================================================================== -// ---------------------------------- ARENA ------------------------------------------------- -//=========================================================================================== - -struct Arena { - unsigned char* buffer; - size_t prev_offset; - size_t curr_offset; - size_t capacity; -}; - -void arena_init(struct Arena *a, unsigned char *backing_store, size_t capacity); -void* arena_alloc_aligned(struct Arena* a, size_t size, size_t align); -void* arena_alloc(struct Arena* a, size_t size); -void* arena_resize_aligned(struct Arena* a, void* old_memory, size_t old_size, - size_t new_size, size_t align); -void* arena_resize(struct Arena* a, void* old_mem, size_t old_size, - size_t new_size); -void arena_clear(struct Arena *a); - -//=========================================================================================== -// ---------------------------------- STACK ------------------------------------------------- -//=========================================================================================== - -/* -* @todo: stack needs to be updated, it's really just a work in progress right now. -* The main thing is minimizing the use of compound types, since that is pretty annoying to deal with. -* I would rather write code that makes sure to collapse all possible cases and lets me just not worry about code. -* Would rather stick to worrying about data being data -*/ - -struct stack { - unsigned char* buffer; - size_t prev_offset; - size_t curr_offset; - size_t capacity; -}; - -struct stack_hdr { - size_t prev_offset; - size_t padding; -}; - -void stack_init(struct stack* s, void *backing_store, size_t capacity); -struct ResVoid stack_alloc_aligned(struct stack* s, size_t size, size_t alignment); -struct ResVoid stack_alloc(struct stack* s, size_t size); -enum MemStatus stack_free(struct stack* s); -struct ResVoid stack_resize_aligned(struct stack* s, void* old_memory, size_t old_size, - size_t new_size, size_t alignment); -struct ResVoid stack_resize(struct stack* s, void* old_memory, size_t old_size, size_t new_size); -void stack_clear(struct stack* s); - -#endif |