retab
This commit is contained in:
+10
-10
@@ -7,17 +7,17 @@
|
||||
// Contains all operations an allocator can do. Similar interface to sdtlibs
|
||||
// malloc, realloc and free.
|
||||
typedef struct allocator_vtbl {
|
||||
void *(*alloc)(void *this, size_t bytes, const char *file, int line);
|
||||
void *(*resize)(void *this, void *old_ptr, size_t bytes, const char *file, int line);
|
||||
void (*free)(void *this, void *ptr, const char *file, int line);
|
||||
void *(*alloc)(void *this, size_t bytes, const char *file, int line);
|
||||
void *(*resize)(void *this, void *old_ptr, size_t bytes, const char *file, int line);
|
||||
void (*free)(void *this, void *ptr, const char *file, int line);
|
||||
} allocator_vtbl_t;
|
||||
|
||||
// An instance of an allocator.
|
||||
typedef struct allocator {
|
||||
// pointer to the behind-the-scenes data that an allocator may store.
|
||||
void *const this;
|
||||
// pointer to the method implementations of an allocator.
|
||||
const allocator_vtbl_t *const vtbl;
|
||||
// pointer to the behind-the-scenes data that an allocator may store.
|
||||
void *const this;
|
||||
// pointer to the method implementations of an allocator.
|
||||
const allocator_vtbl_t *const vtbl;
|
||||
} allocator_t;
|
||||
|
||||
void *allocator_alloc_func(allocator_t this, size_t bytes, const char *file, int line);
|
||||
@@ -32,13 +32,13 @@ extern const allocator_t allocator_stdlib;
|
||||
#ifdef ALLOCATOR_IMPLEMENTATION
|
||||
|
||||
void *allocator_alloc_func(allocator_t this, size_t bytes, const char *file, int line) {
|
||||
return this.vtbl->alloc(this.this, bytes, file, line);
|
||||
return this.vtbl->alloc(this.this, bytes, file, line);
|
||||
}
|
||||
void *allocator_resize_func(allocator_t this, void *old_ptr, size_t bytes, const char *file, int line) {
|
||||
return this.vtbl->resize(this.this, old_ptr, bytes, file, line);
|
||||
return this.vtbl->resize(this.this, old_ptr, bytes, file, line);
|
||||
}
|
||||
void allocator_free_func(allocator_t this, void *ptr, const char *file, int line) {
|
||||
this.vtbl->free(this.this, ptr, file, line);
|
||||
this.vtbl->free(this.this, ptr, file, line);
|
||||
}
|
||||
|
||||
#include "std_allocator.c"
|
||||
|
||||
+17
-17
@@ -1,32 +1,32 @@
|
||||
#include "allocator.h"
|
||||
|
||||
static void *stdlib_alloc(void *this, size_t bytes, const char *file, int line) {
|
||||
(void)this;
|
||||
(void)file;
|
||||
(void)line;
|
||||
return malloc(bytes);
|
||||
(void)this;
|
||||
(void)file;
|
||||
(void)line;
|
||||
return malloc(bytes);
|
||||
}
|
||||
static void *stdlib_resize(void *this, void *old_ptr, size_t bytes, const char *file, int line) {
|
||||
(void)this;
|
||||
(void)file;
|
||||
(void)line;
|
||||
return realloc(old_ptr, bytes);
|
||||
(void)this;
|
||||
(void)file;
|
||||
(void)line;
|
||||
return realloc(old_ptr, bytes);
|
||||
}
|
||||
static void stdlib_free(void *this, void *ptr, const char *file, int line) {
|
||||
(void)this;
|
||||
(void)file;
|
||||
(void)line;
|
||||
free(ptr);
|
||||
(void)this;
|
||||
(void)file;
|
||||
(void)line;
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
static const allocator_vtbl_t stdlib_vtbl = {
|
||||
.alloc = stdlib_alloc,
|
||||
.resize = stdlib_resize,
|
||||
.free = stdlib_free,
|
||||
.alloc = stdlib_alloc,
|
||||
.resize = stdlib_resize,
|
||||
.free = stdlib_free,
|
||||
};
|
||||
|
||||
const allocator_t allocator_stdlib = (allocator_t) {
|
||||
.this=NULL,
|
||||
.vtbl=&stdlib_vtbl,
|
||||
.this=NULL,
|
||||
.vtbl=&stdlib_vtbl,
|
||||
};
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
#include "allocator.h"
|
||||
|
||||
Test(std_allocator, test) {
|
||||
allocator_t this = allocator_stdlib;
|
||||
void *ptr = allocator_alloc(this, 10);
|
||||
cr_assert(ptr != ((void *)0), "non null from malloc");
|
||||
void *new_ptr = allocator_resize(this, ptr, 1024*1024*500);
|
||||
cr_assert(new_ptr != ((void *)0), "non null from realloc");
|
||||
cr_assert(new_ptr != ptr, "realloc is not the same ptr as malloc");
|
||||
allocator_t this = allocator_stdlib;
|
||||
void *ptr = allocator_alloc(this, 10);
|
||||
cr_assert(ptr != ((void *)0), "non null from malloc");
|
||||
void *new_ptr = allocator_resize(this, ptr, 1024*1024*500);
|
||||
cr_assert(new_ptr != ((void *)0), "non null from realloc");
|
||||
cr_assert(new_ptr != ptr, "realloc is not the same ptr as malloc");
|
||||
|
||||
allocator_free(this, new_ptr);
|
||||
allocator_free(this, new_ptr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user