From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Serialize/SerializeConversion.h | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Runtime/Serialize/SerializeConversion.h (limited to 'Runtime/Serialize/SerializeConversion.h') diff --git a/Runtime/Serialize/SerializeConversion.h b/Runtime/Serialize/SerializeConversion.h new file mode 100644 index 0000000..782ea5b --- /dev/null +++ b/Runtime/Serialize/SerializeConversion.h @@ -0,0 +1,34 @@ +#ifndef SERIALIZECONVERSION_H +#define SERIALIZECONVERSION_H + +#if SUPPORT_SERIALIZED_TYPETREES +#include "Runtime/Serialize/TransferFunctions/SerializeTransfer.h" +#include "SerializeTraits.h" + +// Trys to convert from an old type to a new one +template +bool StdTemplateConversionFunction (void* inData, SafeBinaryRead& transfer) +{ + NewFormat& data = *reinterpret_cast (inData); + const TypeTree& oldTypeTree = transfer.GetActiveOldTypeTree (); + AssertIf (SerializeTraits::GetTypeString (NULL) != oldTypeTree.m_Type); + OldFormat oldData; + + SafeBinaryRead safeRead; + CachedReader& temp = safeRead.Init (transfer); + + safeRead.Transfer (oldData, oldTypeTree.m_Name.c_str ()); + + temp.End (); + + data = oldData; + + return true; +} + +#define REGISTER_CONVERTER(from, to) \ +SafeBinaryRead::RegisterConverter (SerializeTraits::GetTypeString (NULL), SerializeTraits::GetTypeString (NULL), \ + StdTemplateConversionFunction) + +#endif +#endif -- cgit v1.1-26-g67d0