Files
EHS/src/PtrData.cpp
karutoh 1a4a1ecd9c
Some checks failed
Build & Release / Linux-x86_64-Build (push) Successful in 40s
Build & Release / Linux-AARCH64-Build (push) Has been cancelled
First commit.
2024-01-31 22:28:19 -08:00

64 lines
867 B
C++

#include "ehs/PtrData.h"
namespace ehs
{
Vector<PtrData> pointers;
bool HasPtrData(void* data)
{
if (!data)
return false;
for (UInt_64 i = 0; i < pointers.Size(); i++)
if (pointers[i].data == data)
return true;
return false;
}
void AddPtrData(void* data)
{
if (!data)
return;
for (UInt_64 i = 0; i < pointers.Size(); i++)
{
if (pointers[i].data != data)
continue;
pointers[i].references++;
return;
}
pointers.Push({1, data});
}
bool RemovePtrData(void* data)
{
if (!data)
return false;
for (UInt_64 i = 0; i < pointers.Size(); i++)
{
if (pointers[i].data != data)
continue;
if (pointers[i].references == 1)
{
pointers.Swap(i, pointers.End());
pointers.Pop();
return true;
}
else
{
pointers[i].references--;
return false;
}
}
return false;
}
}