Pomme/src/PommeMemory.h

51 lines
769 B
C
Raw Permalink Normal View History

#pragma once
2021-07-29 22:07:37 +00:00
#if !defined(POMME_PTR_TRACKING)
#define POMME_PTR_TRACKING _DEBUG
#endif
namespace Pomme::Files
{
struct ResourceMetadata;
}
namespace Pomme::Memory
{
2021-07-29 22:07:37 +00:00
struct BlockDescriptor
{
2021-07-29 22:07:37 +00:00
uint32_t magic;
uint32_t size;
uint32_t ptrBatch;
uint32_t ptrNumInBatch;
Ptr ptrToData;
const Pomme::Files::ResourceMetadata* rezMeta;
2021-07-29 22:07:37 +00:00
static BlockDescriptor* Allocate(uint32_t size);
2021-07-29 22:07:37 +00:00
static void Free(BlockDescriptor* block);
void CheckIsLive() const;
static BlockDescriptor* HandleToBlock(Handle h);
2021-07-29 22:07:37 +00:00
static BlockDescriptor* PtrToBlock(Ptr p);
};
2021-07-18 13:33:01 +00:00
class DisposeHandleGuard
{
public:
DisposeHandleGuard(Handle theHandle)
: h(theHandle)
{}
~DisposeHandleGuard()
{
if (h)
DisposeHandle(h);
}
private:
Handle h;
};
}