Saveload: Remove unnecessary auto-length use for tracerestrict

This commit is contained in:
Jonathan G Rennison
2024-02-21 19:18:55 +00:00
parent 8e8d698b24
commit b58ecb0cd8

View File

@@ -42,27 +42,17 @@ static void Save_TRRM()
} }
} }
/** program length save header struct */
struct TraceRestrictProgramStub {
uint32_t length;
};
static const SaveLoad _trace_restrict_program_stub_desc[] = {
SLE_VAR(TraceRestrictProgramStub, length, SLE_UINT32),
};
/** /**
* Load program pool * Load program pool
*/ */
static void Load_TRRP() static void Load_TRRP()
{ {
int index; int index;
TraceRestrictProgramStub stub;
while ((index = SlIterateArray()) != -1) { while ((index = SlIterateArray()) != -1) {
TraceRestrictProgram *prog = new (index) TraceRestrictProgram(); TraceRestrictProgram *prog = new (index) TraceRestrictProgram();
SlObject(&stub, _trace_restrict_program_stub_desc); uint32_t prog_length = SlReadUint32();
prog->items.resize(stub.length); prog->items.resize(prog_length);
if (stub.length > 0) SlArray(prog->items.data(), stub.length, SLE_UINT32); if (prog_length > 0) SlArray(prog->items.data(), prog_length, SLE_UINT32);
if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) { if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) {
for (size_t i = 0; i < prog->items.size(); i++) { for (size_t i = 0; i < prog->items.size(); i++) {
TraceRestrictItem &item = prog->items[i]; // note this is a reference, TraceRestrictItem &item = prog->items[i]; // note this is a reference,
@@ -107,17 +97,6 @@ static void Load_TRRP()
} }
} }
/**
* Save a program, used by SlAutolength
*/
static void RealSave_TRRP(TraceRestrictProgram *prog)
{
TraceRestrictProgramStub stub;
stub.length = (uint32_t)prog->items.size();
SlObject(&stub, _trace_restrict_program_stub_desc);
SlArray(prog->items.data(), stub.length, SLE_UINT32);
}
/** /**
* Save program pool * Save program pool
*/ */
@@ -125,7 +104,9 @@ static void Save_TRRP()
{ {
for (TraceRestrictProgram *prog : TraceRestrictProgram::Iterate()) { for (TraceRestrictProgram *prog : TraceRestrictProgram::Iterate()) {
SlSetArrayIndex(prog->index); SlSetArrayIndex(prog->index);
SlAutolength((AutolengthProc*) RealSave_TRRP, prog); SlSetLength(4 + (prog->items.size() * 4));
SlWriteUint32((uint32_t)prog->items.size());
SlArray(prog->items.data(), prog->items.size(), SLE_UINT32);
} }
} }
@@ -203,14 +184,6 @@ static void Load_TRRC()
} }
} }
/**
* Save a counter, used by SlAutolength
*/
static void RealSave_TRRC(TraceRestrictCounter *ctr)
{
SlObject(ctr, _trace_restrict_counter_desc);
}
/** /**
* Save counter pool * Save counter pool
*/ */
@@ -218,7 +191,7 @@ static void Save_TRRC()
{ {
for (TraceRestrictCounter *ctr : TraceRestrictCounter::Iterate()) { for (TraceRestrictCounter *ctr : TraceRestrictCounter::Iterate()) {
SlSetArrayIndex(ctr->index); SlSetArrayIndex(ctr->index);
SlAutolength((AutolengthProc*) RealSave_TRRC, ctr); SlObject(ctr, _trace_restrict_counter_desc);
} }
} }