Compare commits
2 Commits
2d2523e679
...
2628784ff6
Author | SHA1 | Date | |
---|---|---|---|
2628784ff6 | |||
1fb355520e |
@ -375,16 +375,6 @@ namespace Aurora::Memory
|
|||||||
inline auline AuUInt Write(const void *buffer, AuUInt requestLength);
|
inline auline AuUInt Write(const void *buffer, AuUInt requestLength);
|
||||||
inline auline AuUInt Read(void *out, AuUInt requestedLength, bool peek = false);
|
inline auline AuUInt Read(void *out, AuUInt requestedLength, bool peek = false);
|
||||||
|
|
||||||
inline auline AuUInt Write(const MemoryViewRead &read)
|
|
||||||
{
|
|
||||||
return Write(read.ptr, read.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline auline AuUInt Read(const MemoryViewWrite &write)
|
|
||||||
{
|
|
||||||
return Read(write.ptr, write.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
// String API
|
// String API
|
||||||
|
|
||||||
inline bool WriteString(AuROString string, EStringType type = EStringType::eStringDword, Locale::ECodePage codepage = Locale::ECodePage::eUTF8);
|
inline bool WriteString(AuROString string, EStringType type = EStringType::eStringDword, Locale::ECodePage codepage = Locale::ECodePage::eUTF8);
|
||||||
@ -411,13 +401,24 @@ namespace Aurora::Memory
|
|||||||
T ReadChecked();
|
T ReadChecked();
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool Write(const T &in);
|
using ReadHack_t = AuConditional_t<AuIsSame_v<MemoryViewWrite, T>, AuUInt, bool>;
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool Write(T &in);
|
using WriteHack_t = AuConditional_t<AuIsSame_v<MemoryViewRead, T>, AuUInt, bool>;
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool Read(T &out);
|
WriteHack_t<T> Write(const T &in);
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
WriteHack_t<T> Write(T &in);
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
ReadHack_t<T> Read(T &out);
|
||||||
|
|
||||||
|
inline auline AuUInt Read(const MemoryViewWrite &write)
|
||||||
|
{
|
||||||
|
return Read(write.ptr, write.length);
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool WriteTagged(const T &in);
|
bool WriteTagged(const T &in);
|
||||||
|
@ -150,11 +150,15 @@ namespace Aurora::Memory
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool ByteBuffer::Read(T &out)
|
ByteBuffer::ReadHack_t<T> ByteBuffer::Read(T &out)
|
||||||
{
|
{
|
||||||
if constexpr (AuIsClass_v<T>)
|
if constexpr (AuIsClass_v<T>)
|
||||||
{
|
{
|
||||||
if constexpr (__detail::AuHasDeserializeBool<AuRemoveReference_t<T>>::type::value)
|
if constexpr (AuIsSame_v<T, MemoryViewWrite>)
|
||||||
|
{
|
||||||
|
return Read(out.ptr, out.length);
|
||||||
|
}
|
||||||
|
else if constexpr (__detail::AuHasDeserializeBool<AuRemoveReference_t<T>>::type::value)
|
||||||
{
|
{
|
||||||
if (!out.Deserialize(*this))
|
if (!out.Deserialize(*this))
|
||||||
{
|
{
|
||||||
@ -331,11 +335,15 @@ namespace Aurora::Memory
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool ByteBuffer::Write(T &in)
|
ByteBuffer::WriteHack_t<T> ByteBuffer::Write(T &in)
|
||||||
{
|
{
|
||||||
if constexpr (AuIsClass_v<T>)
|
if constexpr (AuIsClass_v<T>)
|
||||||
{
|
{
|
||||||
if constexpr (__detail::AuHasSerializeBool<AuRemoveReference_t<T>>::type::value ||
|
if constexpr (AuIsSame_v<T, MemoryViewRead>)
|
||||||
|
{
|
||||||
|
return Write(in.ptr, in.length);
|
||||||
|
}
|
||||||
|
else if constexpr (__detail::AuHasSerializeBool<AuRemoveReference_t<T>>::type::value ||
|
||||||
__detail::AuHasSerializeBool2<AuRemoveReference_t<T>>::type::value)
|
__detail::AuHasSerializeBool2<AuRemoveReference_t<T>>::type::value)
|
||||||
{
|
{
|
||||||
if (!in.Serialize(*this))
|
if (!in.Serialize(*this))
|
||||||
@ -366,11 +374,15 @@ namespace Aurora::Memory
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool ByteBuffer::Write(const T &in)
|
ByteBuffer::WriteHack_t<T> ByteBuffer::Write(const T &in)
|
||||||
{
|
{
|
||||||
if constexpr (AuIsClass_v<T>)
|
if constexpr (AuIsClass_v<T>)
|
||||||
{
|
{
|
||||||
if constexpr (__detail::AuHasSerializeBool2<AuRemoveReference_t<T>>::type::value)
|
if constexpr (AuIsSame_v<T, MemoryViewRead>)
|
||||||
|
{
|
||||||
|
return Write(in.ptr, in.length);
|
||||||
|
}
|
||||||
|
else if constexpr (__detail::AuHasSerializeBool2<AuRemoveReference_t<T>>::type::value)
|
||||||
{
|
{
|
||||||
if (!in.Serialize(*this))
|
if (!in.Serialize(*this))
|
||||||
{
|
{
|
||||||
|
@ -11,8 +11,8 @@ namespace Aurora::Memory
|
|||||||
{
|
{
|
||||||
struct HeapStats
|
struct HeapStats
|
||||||
{
|
{
|
||||||
AuUInt64 qwBytesAllocatedLifetime {};
|
AuUInt uBytesAllocatedLifetime {};
|
||||||
AuUInt64 qwBytesFreeLifetime {};
|
AuUInt uBytesFreeLifetime {};
|
||||||
|
|
||||||
AuUInt uBytesCapacity {};
|
AuUInt uBytesCapacity {};
|
||||||
|
|
||||||
|
@ -26,9 +26,9 @@ namespace Aurora::Memory
|
|||||||
auto &stats = this->pHeap->GetStats();
|
auto &stats = this->pHeap->GetStats();
|
||||||
|
|
||||||
this->stats.uBytesLiveCounter = this->uBytesAllocated;
|
this->stats.uBytesLiveCounter = this->uBytesAllocated;
|
||||||
this->stats.qwBytesAllocatedLifetime = this->uBytesLifetime;
|
this->stats.uBytesAllocatedLifetime = this->uBytesLifetime;
|
||||||
this->stats.uBytesPeakCounter = this->uBytesPeak;
|
this->stats.uBytesPeakCounter = this->uBytesPeak;
|
||||||
this->stats.qwBytesFreeLifetime = this->uBytesFree;
|
this->stats.uBytesFreeLifetime = this->uBytesFree;
|
||||||
this->stats.uBytesCapacity = stats.uBytesCapacity;
|
this->stats.uBytesCapacity = stats.uBytesCapacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,10 +13,10 @@ namespace Aurora::Memory
|
|||||||
std::shared_ptr<Heap> pHeap;
|
std::shared_ptr<Heap> pHeap;
|
||||||
LeakFinderAlloc_f pAlloc;
|
LeakFinderAlloc_f pAlloc;
|
||||||
LeakFinderFree_f pFree;
|
LeakFinderFree_f pFree;
|
||||||
AuUInt64 uBytesAllocated {}; // current
|
AuUInt uBytesAllocated {}; // current
|
||||||
AuUInt64 uBytesPeak {}; // max
|
AuUInt uBytesPeak {}; // max
|
||||||
AuUInt64 uBytesFree {}; // free count
|
AuUInt uBytesFree {}; // free count
|
||||||
AuUInt64 uBytesLifetime {}; // alloc count
|
AuUInt uBytesLifetime {}; // alloc count
|
||||||
|
|
||||||
ProxyHeap(std::shared_ptr<Heap> pHeap,
|
ProxyHeap(std::shared_ptr<Heap> pHeap,
|
||||||
LeakFinderAlloc_f pAlloc = {},
|
LeakFinderAlloc_f pAlloc = {},
|
||||||
|
Loading…
Reference in New Issue
Block a user