fixed instance loading forget to append basepath.. other path fixes (windows)
[csRadar.git] / csrMem.h
index 25913be651236abce298516b4f570cbc5828fb1d..46f4e7367e8dc0de9a10f3eb839545189712948a 100644 (file)
--- a/csrMem.h
+++ b/csrMem.h
@@ -1,7 +1,42 @@
-#ifndef CSR_MEM_H
-#define CSR_MEM_H
+// Copyright (C) 2021 Harry Godden (hgn)
 
-#include "csrTypes.h"
+// Memory API
+// ==================================================================================================================
+
+// Malloc call wrapper that will exit if out of memory (similar to xalloc)
+void *csr_malloc( size_t size );
+void *csr_calloc( size_t size );
+
+// Dynamic arrays (inspired by stb_stretchy_buffer)
+// ------------------------------------------------
+
+// Reserve x elements of size to this buffer. Must assign back (like realloc)
+__attribute__((warn_unused_result))
+void *csr_sb_reserve( void *arr, u32 amt, u32 esize );
+
+// Get index of next free data and increment count by 1
+void *csr_sb_use( void *arr );
+
+// Increment count by amt
+void csr_sb_inc( void *arr, u32 amt );
+
+u32 csr_sb_count( void *arr );
+void csr_sb_free( void *arr );
+
+// Does not clear memory / capacity, but resets count to 0
+void csr_sb_clear( void *arr );
+
+// Internal
+void *csr_sb_raw( void *arr );
+u32 csr_sb_cap( void *arr );
+
+// djb2 - Dan Bernstein
+unsigned long djb2( unsigned char const *str );
+
+// Implementation
+// ==================================================================================================================
+
+#ifdef CSR_EXECUTABLE
 
 void *csr_malloc( size_t size )
 {
@@ -50,7 +85,6 @@ void csr_sb_inc( void *arr, u32 amt )
        raw[1] += amt;
 }
 
-__attribute__((warn_unused_result))
 void *csr_sb_reserve( void *arr, u32 amt, u32 esize )
 {
        u32 cap = arr? csr_sb_cap( arr ): 0;