From 3c3afdcecdd1fbd69a106fa9d9548a78eeef5c96 Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Fri, 5 Apr 2024 21:59:24 -0700 Subject: [PATCH 1/2] Put version in serialized state --- NeuralAmpModeler/NeuralAmpModeler.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp index 13c141d4..fdf49984 100644 --- a/NeuralAmpModeler/NeuralAmpModeler.cpp +++ b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -391,6 +391,9 @@ void NeuralAmpModeler::OnIdle() bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const { + // Plugin version, so we can load legacy serialized states in the future! + WDL_String version(PLUG_VERSION_STR); + chunk.PutStr(version.Get()); // Model directory (don't serialize the model itself; we'll just load it again // when we unserialize) chunk.PutStr(mNAMPath.Get()); @@ -400,7 +403,12 @@ bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const int NeuralAmpModeler::UnserializeState(const IByteChunk& chunk, int startPos) { - WDL_String dir; + WDL_String version; + startPos = chunk.GetStr(version, startPos); + // Version-specific loading here if needed. + // ... + + // Current version loading: startPos = chunk.GetStr(mNAMPath, startPos); startPos = chunk.GetStr(mIRPath, startPos); int retcode = UnserializeParams(chunk, startPos); From 08e8f7c0561f4516dca0bd4bcfb6a20cd4d2311e Mon Sep 17 00:00:00 2001 From: Steven Atkinson Date: Fri, 5 Apr 2024 22:09:37 -0700 Subject: [PATCH 2/2] Add header to serialized state --- NeuralAmpModeler/NeuralAmpModeler.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp index fdf49984..50facbb9 100644 --- a/NeuralAmpModeler/NeuralAmpModeler.cpp +++ b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -391,6 +391,9 @@ void NeuralAmpModeler::OnIdle() bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const { + // If this isn't here when unserializing, then we know we're dealing with something before v0.8.0. + WDL_String header("###NeuralAmpModeler###"); // Don't change this! + chunk.PutStr(header.Get()); // Plugin version, so we can load legacy serialized states in the future! WDL_String version(PLUG_VERSION_STR); chunk.PutStr(version.Get()); @@ -403,6 +406,13 @@ bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const int NeuralAmpModeler::UnserializeState(const IByteChunk& chunk, int startPos) { + WDL_String header; + startPos = chunk.GetStr(header, startPos); + // TODO: Handle legacy plugin serialized states. + //if strncmp (header.Get(), "###NeuralAmpModeler###") + //{ + // return UnserializeStateLegacy(header, startPos); // (We'll assume 0.7.9). + //} WDL_String version; startPos = chunk.GetStr(version, startPos); // Version-specific loading here if needed.