chore(build): remove mem dependency

This commit is contained in:
phaneron 2024-09-04 08:03:03 -04:00
parent 3acd26453d
commit f42a37ddd7
5 changed files with 85 additions and 7 deletions

View file

@ -1,5 +1,5 @@
#include "bc/Memory.hpp"
#include <mem/Memory.hpp>
#include "bc/memory/Storm.hpp"
void* Blizzard::Memory::Allocate(uint32_t bytes) {
return SMemAlloc(bytes, __FILE__, __LINE__, 0x0);

68
bc/memory/Storm.cpp Normal file
View file

@ -0,0 +1,68 @@
#include "bc/memory/Storm.hpp"
#include <cstdlib>
constexpr size_t ALIGNMENT = 8;
void* SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t flags) {
size_t alignedBytes = (bytes + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1);
void* result;
if (flags & 0x8) {
result = calloc(1, alignedBytes);
} else {
result = malloc(alignedBytes);
}
if (result) {
return result;
} else {
// TODO handle errors
return nullptr;
}
}
void SMemFree(void* ptr) {
if (ptr) {
free(ptr);
}
}
void SMemFree(void* ptr, const char* filename, int32_t linenumber, uint32_t flags) {
if (ptr) {
free(ptr);
}
}
void* SMemReAlloc(void* ptr, size_t bytes, const char* filename, int32_t linenumber, uint32_t flags) {
if (flags == 0xB00BEEE5) {
return nullptr;
}
if (!ptr) {
return SMemAlloc(bytes, filename, linenumber, flags);
}
if (flags & 0x10) {
return nullptr;
}
size_t alignedBytes = (bytes + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1);
void* result = realloc(ptr, alignedBytes);
if (result) {
if (flags & 0x8) {
// TODO zero out expanded portion
}
return result;
} else {
if (alignedBytes) {
// TODO handle errors
}
return nullptr;
}
}

14
bc/memory/Storm.hpp Normal file
View file

@ -0,0 +1,14 @@
#ifndef BC_MEMORY_STORM_HPP
#define BC_MEMORY_STORM_HPP
#include <cstdint>
void* SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t flags);
void SMemFree(void* ptr);
void SMemFree(void* ptr, const char* filename, int32_t linenumber, uint32_t flags);
void* SMemReAlloc(void* ptr, size_t bytes, const char* filename, int32_t linenumber, uint32_t flags);
#endif

View file

@ -16,10 +16,6 @@ pub fn build(b: *std.Build) void {
// Add system detection defines
system.add_defines(bc);
// Publicly link mem
const mem = b.dependency("mem", .{});
bc.linkLibrary(mem.artifact("mem"));
bc.addIncludePath(b.path("."));
bc.addCSourceFiles(.{
@ -48,6 +44,8 @@ pub fn build(b: *std.Build) void {
"bc/time/Time.cpp",
"bc/memory/Storm.cpp",
"bc/Debug.cpp",
"bc/Lock.cpp",
"bc/Memory.cpp",
@ -72,7 +70,6 @@ pub fn build(b: *std.Build) void {
// Add system detection defines
system.add_defines(bc_test_exe);
bc_test_exe.linkLibrary(mem.artifact("mem"));
bc_test_exe.linkLibrary(bc);
bc_test_exe.addIncludePath(b.path("."));

@ -1 +0,0 @@
Subproject commit 515378839ec59155ef2b8df141f588f3f12f89d2