First commit.
Some checks failed
Build & Release / Linux-x86_64-Build (push) Successful in 40s
Build & Release / Linux-AARCH64-Build (push) Has been cancelled

This commit is contained in:
2024-01-31 22:28:19 -08:00
commit 1a4a1ecd9c
246 changed files with 42404 additions and 0 deletions

121
include/ehs/ShdPtr.h Normal file
View File

@@ -0,0 +1,121 @@
#pragma once
#include "PtrData.h"
namespace ehs
{
template<typename T>
class ShdPtr
{
private:
T* data;
public:
~ShdPtr()
{
if (RemovePtrData(data))
delete data;
}
ShdPtr()
: data(nullptr)
{
}
ShdPtr(T* data)
: data(data)
{
AddPtrData(data);
}
ShdPtr(ShdPtr&& shdPtr) noexcept
: data(shdPtr.data)
{
shdPtr.data = nullptr;
}
ShdPtr(const ShdPtr& shdPtr)
: data(shdPtr.data)
{
AddPtrData(data);
}
ShdPtr& operator=(ShdPtr&& shdPtr) noexcept
{
if (this == &shdPtr)
return *this;
if (RemovePtrData(data))
delete data;
data = shdPtr.data;
shdPtr.data = nullptr;
return *this;
}
ShdPtr& operator=(const ShdPtr& shdPtr) noexcept
{
if (this == &shdPtr)
return *this;
if (RemovePtrData(data))
delete data;
data = shdPtr.data;
AddPtrData(data);
return *this;
}
bool operator==(const ShdPtr& shdPtr)
{
if (!HasPtrData(data))
data = nullptr;
return data == shdPtr.data;
}
bool operator==(T* inPtr)
{
if (!HasPtrData(data))
data = nullptr;
return data == inPtr;
}
bool operator!=(const ShdPtr& shdPtr)
{
if (!HasPtrData(data))
data = nullptr;
return data != shdPtr.data;
}
bool operator!=(T* inPtr)
{
if (!HasPtrData(data))
data = nullptr;
return data != inPtr;
}
void Release()
{
if (RemovePtrData(data))
delete data;
data = nullptr;
}
T* GetData()
{
if (!HasPtrData(data))
data = nullptr;
return data;
}
};
}