summaryrefslogtreecommitdiff
path: root/Runtime/Serialize/TransferFunctions/StreamedBinaryRead.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/StreamedBinaryRead.cpp
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Serialize/TransferFunctions/StreamedBinaryRead.cpp')
-rw-r--r--Runtime/Serialize/TransferFunctions/StreamedBinaryRead.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/Runtime/Serialize/TransferFunctions/StreamedBinaryRead.cpp b/Runtime/Serialize/TransferFunctions/StreamedBinaryRead.cpp
new file mode 100644
index 0000000..4daa8fb
--- /dev/null
+++ b/Runtime/Serialize/TransferFunctions/StreamedBinaryRead.cpp
@@ -0,0 +1,54 @@
+#include "UnityPrefix.h"
+#include "StreamedBinaryRead.h"
+
+template <bool kSwapEndianess>
+void StreamedBinaryRead<kSwapEndianess>::Align ()
+{
+ m_Cache.Align4Read();
+}
+
+template <bool kSwapEndianess>
+void StreamedBinaryRead<kSwapEndianess>::TransferTypeless (unsigned* byteSize, const char*/* name*/, TransferMetaFlags/* metaFlag*/)
+{
+ SInt32 size;
+ Transfer (size, "size");
+ *byteSize = size;
+}
+
+// markerID is the id that was given by TransferTypeless.
+// optional copyData: is a pointer to where the data will be written or read from
+template <bool kSwapEndianess>
+void StreamedBinaryRead<kSwapEndianess>::TransferTypelessData (unsigned byteSize, void* copyData, int metaData)
+{
+ if (byteSize == 0)
+ return;
+
+ if (copyData == NULL)
+ {
+ // seek byte
+ m_Cache.Skip(byteSize);
+ }
+ else
+ m_Cache.Read (copyData, byteSize);
+ Align();
+}
+
+template <bool kSwapEndianess>
+void StreamedBinaryRead<kSwapEndianess>::ReadDirect (void* data, int byteSize)
+{
+ AssertIf (kSwapEndianess);
+ m_Cache.Read (data, byteSize);
+}
+
+
+template void StreamedBinaryRead<true>::ReadDirect (void* data, int byteSize);
+template void StreamedBinaryRead<false>::ReadDirect (void* data, int byteSize);
+
+template void StreamedBinaryRead<true>::Align();
+template void StreamedBinaryRead<false>::Align();
+
+template void StreamedBinaryRead<true>::TransferTypelessData (unsigned byteSize, void* copyData, int metaData);
+template void StreamedBinaryRead<false>::TransferTypelessData (unsigned byteSize, void* copyData, int metaData);
+
+template void StreamedBinaryRead<true>::TransferTypeless (unsigned* byteSize, const char*/* name*/, TransferMetaFlags/* metaFlag*/);
+template void StreamedBinaryRead<false>::TransferTypeless (unsigned* byteSize, const char*/* name*/, TransferMetaFlags/* metaFlag*/);