mirror of
https://github.com/thunderbrewhq/bc.git
synced 2026-04-27 03:43:51 +00:00
feat(memory): add Storm compatibility macros
This commit is contained in:
parent
367b8149f3
commit
b9dd205765
3 changed files with 48 additions and 0 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,6 +1,10 @@
|
|||
.DS_Store
|
||||
.idea
|
||||
.vscode
|
||||
CMakeSettings.json
|
||||
|
||||
/build
|
||||
/cmake-build-*
|
||||
/dist
|
||||
/out
|
||||
/.vs
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue