From 32a73727b0d273074555fd27cdb93b69bc339997 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 2 Jan 2022 01:28:06 +0100 Subject: [PATCH] Optimize Stream includes to Array --- Source/Engine/Core/Log.cpp | 3 +++ Source/Engine/Serialization/MemoryReadStream.h | 9 +++++---- Source/Engine/Serialization/ReadStream.h | 7 ++++--- Source/Engine/Serialization/Stream.cpp | 2 +- Source/Engine/Serialization/Stream.h | 1 + Source/Engine/Serialization/WriteStream.h | 9 ++++----- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Source/Engine/Core/Log.cpp b/Source/Engine/Core/Log.cpp index f0f2157ca..979133d83 100644 --- a/Source/Engine/Core/Log.cpp +++ b/Source/Engine/Core/Log.cpp @@ -11,6 +11,9 @@ #include "Engine/Serialization/FileWriteStream.h" #include "Engine/Serialization/MemoryWriteStream.h" #include "Engine/Debug/Exceptions/Exceptions.h" +#if USE_EDITOR +#include "Engine/Core/Collections/Array.h" +#endif #include #define LOG_ENABLE_FILE (!PLATFORM_SWITCH) diff --git a/Source/Engine/Serialization/MemoryReadStream.h b/Source/Engine/Serialization/MemoryReadStream.h index 79ee845cb..b05dcece1 100644 --- a/Source/Engine/Serialization/MemoryReadStream.h +++ b/Source/Engine/Serialization/MemoryReadStream.h @@ -3,6 +3,7 @@ #pragma once #include "ReadStream.h" +#include "Engine/Platform/Platform.h" /// /// Super fast advanced data reading from raw bytes without any overhead at all @@ -33,8 +34,8 @@ public: /// Init /// /// Array with data to read from - template - MemoryReadStream(const Array& data) + template + MemoryReadStream(const Array& data) : MemoryReadStream(data.Get(), data.Count() * sizeof(T)) { } @@ -52,8 +53,8 @@ public: /// Init stream to the custom buffer location /// /// Array with data to read from - template - FORCE_INLINE void Init(const Array& data) + template + FORCE_INLINE void Init(const Array& data) { Init(data.Get(), data.Count() * sizeof(T)); } diff --git a/Source/Engine/Serialization/ReadStream.h b/Source/Engine/Serialization/ReadStream.h index 6b29804cd..f7b77b0d5 100644 --- a/Source/Engine/Serialization/ReadStream.h +++ b/Source/Engine/Serialization/ReadStream.h @@ -2,8 +2,8 @@ #pragma once -#include "Engine/Core/Collections/Array.h" #include "Stream.h" +#include "Engine/Core/Templates.h" struct CommonValue; struct Variant; @@ -193,9 +193,10 @@ public: /// Read data array /// /// Array to read - template - void ReadArray(Array* data) + template + void ReadArray(Array* data) { + static_assert(TIsPODType::Value, "Only POD types are valid for ReadArray."); int32 size; ReadInt32(&size); data->Resize(size, false); diff --git a/Source/Engine/Serialization/Stream.cpp b/Source/Engine/Serialization/Stream.cpp index dafaf3e22..ce1538a36 100644 --- a/Source/Engine/Serialization/Stream.cpp +++ b/Source/Engine/Serialization/Stream.cpp @@ -519,7 +519,7 @@ void WriteStream::WriteStringAnsi(const StringAnsiView& data) Write(data.Get(), length); } -void WriteStream::WriteStringAnsi(const StringAnsiView& data, int16 lock) +void WriteStream::WriteStringAnsi(const StringAnsiView& data, int8 lock) { const int32 length = data.Length(); ASSERT(length < STREAM_MAX_STRING_LENGTH); diff --git a/Source/Engine/Serialization/Stream.h b/Source/Engine/Serialization/Stream.h index d988a24df..e107a190f 100644 --- a/Source/Engine/Serialization/Stream.h +++ b/Source/Engine/Serialization/Stream.h @@ -2,6 +2,7 @@ #pragma once +#include "Engine/Core/Core.h" #include "Engine/Core/Types/BaseTypes.h" #define FILESTREAM_BUFFER_SIZE 4096 diff --git a/Source/Engine/Serialization/WriteStream.h b/Source/Engine/Serialization/WriteStream.h index 06e3b3904..94e19fbba 100644 --- a/Source/Engine/Serialization/WriteStream.h +++ b/Source/Engine/Serialization/WriteStream.h @@ -2,9 +2,8 @@ #pragma once -#include "Engine/Core/Collections/Array.h" -#include "Engine/Core/Formatting.h" #include "Stream.h" +#include "Engine/Core/Templates.h" struct CommonValue; struct Variant; @@ -211,7 +210,7 @@ public: // Writes Ansi String to the stream // @param data Data to write // @param lock Characters pass in the stream - void WriteStringAnsi(const StringAnsiView& data, int16 lock); + void WriteStringAnsi(const StringAnsiView& data, int8 lock); public: @@ -231,8 +230,8 @@ public: /// Write data array /// /// Array to write - template - void WriteArray(const Array& data) + template + void WriteArray(const Array& data) { static_assert(TIsPODType::Value, "Only POD types are valid for WriteArray."); const int32 size = data.Count();