summaryrefslogtreecommitdiff
path: root/Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp')
-rw-r--r--Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp b/Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp
new file mode 100644
index 0000000..a7699e9
--- /dev/null
+++ b/Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.cpp
@@ -0,0 +1,76 @@
+#include "UnityPrefix.h"
+#include "StreamedBinaryWrite.h"
+#include "Configuration/UnityConfigure.h"
+
+template <bool kSwapEndianess>
+CachedWriter& StreamedBinaryWrite<kSwapEndianess>::Init (int flags, BuildTargetSelection target)
+{
+ m_Flags = flags;
+ m_UserData = NULL;
+ m_Target = target;
+
+#if UNITY_EDITOR && CHECK_SERIALIZE_ALIGNMENT
+ m_Cache.SetCheckSerializeAlignment(true);
+ #endif
+ return m_Cache;
+}
+
+template <bool kSwapEndianess>
+CachedWriter& StreamedBinaryWrite<kSwapEndianess>::Init (const CachedWriter& cachedWriter, int flags, BuildTargetSelection target, const BuildUsageTag& buildUsageTag)
+{
+ m_Flags = flags;
+ m_Target = target;
+ m_Cache = cachedWriter;
+ m_UserData = NULL;
+
+ #if UNITY_EDITOR
+ m_BuildUsageTag = buildUsageTag;
+ #endif
+
+#if UNITY_EDITOR && CHECK_SERIALIZE_ALIGNMENT
+ m_Cache.SetCheckSerializeAlignment(true);
+#endif
+ return m_Cache;
+}
+
+template <bool kSwapEndianess>
+void StreamedBinaryWrite<kSwapEndianess>::Align ()
+{
+ m_Cache.Align4Write();
+}
+
+
+template <bool kSwapEndianess>
+void StreamedBinaryWrite<kSwapEndianess>::TransferTypeless (unsigned* byteSize, const char* /* name*/, TransferMetaFlags/* metaFlag*/)
+{
+ SInt32 size = *byteSize;
+ Transfer (size, "size");
+}
+
+// markerID is the id that was given by TransferTypeless.
+// byteStart is
+// optional temporaryDataHandle: temporaryDataHandle is a handle to the data
+// optional copyData: is a pointer to where the data will be written or read from
+template <bool kSwapEndianess>
+void StreamedBinaryWrite<kSwapEndianess>::TransferTypelessData (unsigned byteSize, void* copyData, int/* metaData*/)
+{
+ AssertIf(copyData == NULL && byteSize != 0);
+ m_Cache.Write (copyData, byteSize);
+ Align();
+}
+
+
+template CachedWriter& StreamedBinaryWrite<false>::Init (int flags, BuildTargetSelection target);
+template CachedWriter& StreamedBinaryWrite<true>::Init (int flags, BuildTargetSelection target);
+
+template CachedWriter& StreamedBinaryWrite<false>::Init (const CachedWriter& cachedWriter, int flags, BuildTargetSelection target, const BuildUsageTag& buildUsageTag);
+template CachedWriter& StreamedBinaryWrite<true>::Init (const CachedWriter& cachedWriter, int flags, BuildTargetSelection target, const BuildUsageTag& buildUsageTag);
+
+template void StreamedBinaryWrite<false>::Align ();
+template void StreamedBinaryWrite<true>::Align ();
+
+template void StreamedBinaryWrite<false>::TransferTypeless (unsigned* byteSize, const char*/* name*/, TransferMetaFlags/* metaFlag*/);
+template void StreamedBinaryWrite<true>::TransferTypeless (unsigned* byteSize, const char*/* name*/, TransferMetaFlags/* metaFlag*/);
+
+template void StreamedBinaryWrite<false>::TransferTypelessData (unsigned byteSize, void* copyData, int metaData);
+template void StreamedBinaryWrite<true>::TransferTypelessData (unsigned byteSize, void* copyData, int metaData);