EHS/src/PtrData.cpp
2023-12-17 03:29:08 -08:00

64 lines
874 B
C++

#include "../include/PtrData.h"
namespace lwe
{
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;
}
}