commit 3c05ec173654b39d12b716cc4dfcbb0d791c18d0
parent 3dba2cd32e7c1bf6068a2231e4eaf2d79ee567b8
Author: Steven Atkinson <steven@atkinson.mn>
Date: Sat, 6 Apr 2024 00:19:27 -0500
[ENHANCEMENT,BREAKING] Serialize plugin version (#458)
* Put version in serialized state
* Add header to serialized state
Diffstat:
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp
@@ -391,6 +391,12 @@ 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());
// Model directory (don't serialize the model itself; we'll just load it again
// when we unserialize)
chunk.PutStr(mNAMPath.Get());
@@ -400,7 +406,19 @@ bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const
int NeuralAmpModeler::UnserializeState(const IByteChunk& chunk, int startPos)
{
- WDL_String dir;
+ 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.
+ // ...
+
+ // Current version loading:
startPos = chunk.GetStr(mNAMPath, startPos);
startPos = chunk.GetStr(mIRPath, startPos);
int retcode = UnserializeParams(chunk, startPos);