@@ -2569,6 +2569,7 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString(
2569
2569
#include <cstdlib>
2570
2570
#include <cstring>
2571
2571
#include <utility>
2572
+ #include <type_traits>
2572
2573
2573
2574
#ifdef _MSC_VER
2574
2575
#include <intrin.h> // For functions like __popcnt, _BitScanForward etc.
@@ -5491,6 +5492,7 @@ class VmaJsonWriter
5491
5492
// Posts next part of an open string. The number is converted to decimal characters.
5492
5493
void ContinueString(uint32_t n);
5493
5494
void ContinueString(uint64_t n);
5495
+ void ContinueString_Size(size_t n);
5494
5496
// Posts next part of an open string. Pointer value is converted to characters
5495
5497
// using "%p" formatting - shown as hexadecimal number, e.g.: 000000081276Ad00
5496
5498
void ContinueString_Pointer(const void* ptr);
@@ -5500,6 +5502,7 @@ class VmaJsonWriter
5500
5502
// Writes a number value.
5501
5503
void WriteNumber(uint32_t n);
5502
5504
void WriteNumber(uint64_t n);
5505
+ void WriteSize(size_t n);
5503
5506
// Writes a boolean value - false or true.
5504
5507
void WriteBool(bool b);
5505
5508
// Writes a null value.
@@ -5524,6 +5527,11 @@ class VmaJsonWriter
5524
5527
VmaVector< StackItem, VmaStlAllocator<StackItem> > m_Stack;
5525
5528
bool m_InsideString;
5526
5529
5530
+ // Write size_t for less than 64bits
5531
+ void WriteSize(size_t n, std::integral_constant<bool, false>) { m_SB.AddNumber(static_cast<uint32_t>(n)); }
5532
+ // Write size_t for 64bits
5533
+ void WriteSize(size_t n, std::integral_constant<bool, true>) { m_SB.AddNumber(static_cast<uint64_t>(n)); }
5534
+
5527
5535
void BeginValue(bool isString);
5528
5536
void WriteIndent(bool oneLess = false);
5529
5537
};
@@ -5666,6 +5674,14 @@ void VmaJsonWriter::ContinueString(uint64_t n)
5666
5674
m_SB.AddNumber(n);
5667
5675
}
5668
5676
5677
+ void VmaJsonWriter::ContinueString_Size(size_t n)
5678
+ {
5679
+ VMA_ASSERT(m_InsideString);
5680
+ // Fix for AppleClang incorrect type casting
5681
+ // TODO: Change to if constexpr when C++17 used as minimal standard
5682
+ WriteSize(n, std::is_same<size_t, uint64_t>{});
5683
+ }
5684
+
5669
5685
void VmaJsonWriter::ContinueString_Pointer(const void* ptr)
5670
5686
{
5671
5687
VMA_ASSERT(m_InsideString);
@@ -5697,6 +5713,15 @@ void VmaJsonWriter::WriteNumber(uint64_t n)
5697
5713
m_SB.AddNumber(n);
5698
5714
}
5699
5715
5716
+ void VmaJsonWriter::WriteSize(size_t n)
5717
+ {
5718
+ VMA_ASSERT(!m_InsideString);
5719
+ BeginValue(false);
5720
+ // Fix for AppleClang incorrect type casting
5721
+ // TODO: Change to if constexpr when C++17 used as minimal standard
5722
+ WriteSize(n, std::is_same<size_t, uint64_t>{});
5723
+ }
5724
+
5700
5725
void VmaJsonWriter::WriteBool(bool b)
5701
5726
{
5702
5727
VMA_ASSERT(!m_InsideString);
@@ -6445,13 +6470,13 @@ void VmaBlockMetadata::PrintDetailedMap_Begin(class VmaJsonWriter& json,
6445
6470
json.WriteNumber(GetSize());
6446
6471
6447
6472
json.WriteString("UnusedBytes");
6448
- json.WriteNumber (unusedBytes);
6473
+ json.WriteSize (unusedBytes);
6449
6474
6450
6475
json.WriteString("Allocations");
6451
- json.WriteNumber (allocationCount);
6476
+ json.WriteSize (allocationCount);
6452
6477
6453
6478
json.WriteString("UnusedRanges");
6454
- json.WriteNumber (unusedRangeCount);
6479
+ json.WriteSize (unusedRangeCount);
6455
6480
6456
6481
json.WriteString("Suballocations");
6457
6482
json.BeginArray();
@@ -15978,7 +16003,7 @@ void VmaAllocator_T::PrintDetailedMap(VmaJsonWriter& json)
15978
16003
{
15979
16004
json.WriteString("Name");
15980
16005
json.BeginString();
15981
- json.ContinueString (index++);
16006
+ json.ContinueString_Size (index++);
15982
16007
if (pool->GetName())
15983
16008
{
15984
16009
json.WriteString(" - ");
0 commit comments