feat(memory): add Storm compatibility macros

This commit is contained in:
VDm 2026-04-26 16:34:33 +04:00
parent 367b8149f3
commit b9dd205765
3 changed files with 48 additions and 0 deletions

4
.gitignore vendored
View file

@ -1,6 +1,10 @@
.DS_Store
.idea
.vscode
CMakeSettings.json
/build
/cmake-build-*
/dist
/out
/.vs

View file

@ -1,5 +1,7 @@
#include "bc/memory/Storm.hpp"
#include <cstring>
constexpr size_t ALIGNMENT = 8;
void* operator new(size_t bytes) {
@ -35,6 +37,18 @@ void* SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t
}
}
int SMemCmp(void* ptrA, void* ptrB, size_t bytes) {
return memcmp(ptrA, ptrB, bytes);
}
void SMemCopy(void* dst, void* src, size_t bytes) {
memmove(dst, src, bytes);
}
void SMemFill(void* ptr, size_t bytes, uint8_t value) {
memset(ptr, value, bytes);
}
void SMemFree(void* ptr) {
if (ptr) {
free(ptr);
@ -47,6 +61,10 @@ void SMemFree(void* ptr, const char* filename, int32_t linenumber, uint32_t flag
}
}
void SMemMove(void* dst, void* src, size_t bytes) {
memmove(dst, src, bytes);
}
void* SMemReAlloc(void* ptr, size_t bytes, const char* filename, int32_t linenumber, uint32_t flags) {
if (flags == 0xB00BEEE5) {
return nullptr;
@ -78,3 +96,10 @@ void* SMemReAlloc(void* ptr, size_t bytes, const char* filename, int32_t linenum
return nullptr;
}
}
void SMemZero(void* ptr, size_t bytes) {
uint8_t* ptrdata = static_cast<uint8_t*>(ptr);
for (size_t i = 0; i < bytes; i++) {
ptrdata[i] = 0;
}
}

View file

@ -21,16 +21,35 @@
} \
} while (0)
// Whoa compatibility macros
#define STORM_ALLOC(n) SMemAlloc(static_cast<size_t>(n), __FILE__, __LINE__, 0x0)
#define STORM_ALLOC_ZERO(n) SMemAlloc(static_cast<size_t>(n), __FILE__, __LINE__, 0x8)
#define STORM_FREE(ptr) SMemFree(ptr, __FILE__, __LINE__, 0x0)
#define STORM_NEW(T, ...) (new (SMemAlloc(sizeof(T), __FILE__, __LINE__, 0)) T(__VA_ARGS__))
#define STORM_NEW_ZERO(T, ...) (new (SMemAlloc(sizeof(T), __FILE__, __LINE__, 0x8)) T(__VA_ARGS__))
// allocation functions
void* SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t flags);
int SMemCmp(void* ptrA, void* ptrB, size_t bytes);
void SMemCopy(void* dst, void* src, size_t bytes);
void SMemFill(void* ptr, size_t bytes, uint8_t value);
void SMemFree(void* ptr);
void SMemFree(void* ptr, const char* filename, int32_t linenumber, uint32_t flags);
void SMemMove(void* dst, void* src, size_t bytes);
void* SMemReAlloc(void* ptr, size_t bytes, const char* filename, int32_t linenumber, uint32_t flags);
void SMemZero(void* ptr, size_t bytes);
// global operators
void* operator new(size_t bytes);