Files
core_misc/tjp/core/extensible/Extensible.cpp
Timothy Prepscius fa54be052a flatten 20260225
2026-02-25 12:39:24 -05:00

68 lines
1.4 KiB
C++

// TJP COPYRIGHT HEADER
#include "Extensible.h"
#include <atomic>
#include <tjp/core/log/Log.h>
#include <tjp/core/log/LogOf.h>
namespace tjp::core {
std::atomic<size_t> nextExtensionIndex = 0;
size_t getNextExtensionIndex()
{
sLogDebug("core::extensible", logVar(nextExtensionIndex));
return nextExtensionIndex++;
}
constexpr size_t MAX_CACHE_STATISTICS = 64;
static std::array<size_t, MAX_CACHE_STATISTICS+1> numPerSizeCurrent = {0};
static std::array<size_t, MAX_CACHE_STATISTICS+1> numPerSizeTotals = {0};
void onExtensibleCache_(void *t, size_t size)
{
if (size < MAX_CACHE_STATISTICS)
{
if (size > 0)
{
numPerSizeCurrent[size-1]--;
numPerSizeTotals[size-1]--;
}
numPerSizeCurrent[size]++;
numPerSizeTotals[size]++;
}
sLogDebug("core::extensible", "C " << logVar(numPerSizeCurrent));
sLogDebug("core::extensible", "T " << logVar(numPerSizeTotals));
}
void onExtensibleCacheNew_(void *t)
{
onExtensibleCache_(t, 0);
}
void onExtensibleCacheClear_(void *t, size_t size)
{
if (size < MAX_CACHE_STATISTICS)
{
numPerSizeCurrent[size]--;
numPerSizeTotals[size]--;
numPerSizeCurrent[0]++;
numPerSizeTotals[0]++;
}
}
void onExtensibleCacheDelete_(void *t, size_t size)
{
numPerSizeCurrent[size]--;
sLogDebug("core::extensible", "C " << logVar(numPerSizeCurrent));
sLogDebug("core::extensible", "T " << logVar(numPerSizeTotals));
}
} // namespace