From 691de5b5c421e8506d0fc6ced88df6d159fafd07 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 18 Jun 2020 20:03:56 +0200 Subject: [PATCH] Renderer/ShaderSerialize: Use ByteStream instead of ByteArray --- include/Nazara/Renderer/ShaderSerializer.hpp | 12 +++++------- include/Nazara/Renderer/ShaderSerializer.inl | 10 ++++------ src/Nazara/Renderer/ShaderSerializer.cpp | 11 +++++------ 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/include/Nazara/Renderer/ShaderSerializer.hpp b/include/Nazara/Renderer/ShaderSerializer.hpp index a5e012a9c..eac0c2bf8 100644 --- a/include/Nazara/Renderer/ShaderSerializer.hpp +++ b/include/Nazara/Renderer/ShaderSerializer.hpp @@ -67,7 +67,7 @@ namespace Nz class NAZARA_RENDERER_API ShaderSerializer final : public ShaderSerializerBase { public: - inline ShaderSerializer(ByteArray& byteArray); + inline ShaderSerializer(ByteStream& stream); ~ShaderSerializer() = default; void Serialize(const ShaderAst& shader); @@ -85,14 +85,13 @@ namespace Nz void Value(UInt32& val) override; void Variable(ShaderNodes::VariablePtr& var) override; - ByteArray& m_byteArray; - ByteStream m_stream; + ByteStream& m_stream; }; class NAZARA_RENDERER_API ShaderUnserializer final : public ShaderSerializerBase { public: - ShaderUnserializer(const ByteArray& byteArray); + ShaderUnserializer(ByteStream& stream); ~ShaderUnserializer() = default; ShaderAst Unserialize(); @@ -109,12 +108,11 @@ namespace Nz void Value(UInt32& val) override; void Variable(ShaderNodes::VariablePtr& var) override; - const ByteArray& m_byteArray; - ByteStream m_stream; + ByteStream& m_stream; }; NAZARA_RENDERER_API ByteArray SerializeShader(const ShaderAst& shader); - NAZARA_RENDERER_API ShaderAst UnserializeShader(const ByteArray& data); + NAZARA_RENDERER_API ShaderAst UnserializeShader(ByteStream& stream); } #include diff --git a/include/Nazara/Renderer/ShaderSerializer.inl b/include/Nazara/Renderer/ShaderSerializer.inl index a2b680b95..0daeb6653 100644 --- a/include/Nazara/Renderer/ShaderSerializer.inl +++ b/include/Nazara/Renderer/ShaderSerializer.inl @@ -95,15 +95,13 @@ namespace Nz val = static_cast(value); } - inline ShaderSerializer::ShaderSerializer(ByteArray& byteArray) : - m_byteArray(byteArray), - m_stream(&m_byteArray, OpenModeFlags(OpenMode_WriteOnly)) + inline ShaderSerializer::ShaderSerializer(ByteStream& stream) : + m_stream(stream) { } - inline ShaderUnserializer::ShaderUnserializer(const ByteArray& byteArray) : - m_byteArray(byteArray), - m_stream(const_cast(&m_byteArray), OpenModeFlags(OpenMode_ReadOnly)) + inline ShaderUnserializer::ShaderUnserializer(ByteStream& stream) : + m_stream(stream) { } } diff --git a/src/Nazara/Renderer/ShaderSerializer.cpp b/src/Nazara/Renderer/ShaderSerializer.cpp index 7d1b7ac2e..f97186acf 100644 --- a/src/Nazara/Renderer/ShaderSerializer.cpp +++ b/src/Nazara/Renderer/ShaderSerializer.cpp @@ -248,9 +248,6 @@ namespace Nz void ShaderSerializer::Serialize(const ShaderAst& shader) { - UInt32 magicNumber = s_magicNumber; - UInt32 version = s_currentVersion; - m_stream << s_magicNumber << s_currentVersion; auto SerializeInputOutput = [&](auto& inout) @@ -558,15 +555,17 @@ namespace Nz ByteArray SerializeShader(const ShaderAst& shader) { ByteArray byteArray; - ShaderSerializer serializer(byteArray); + ByteStream stream(&byteArray, OpenModeFlags(OpenMode_WriteOnly)); + + ShaderSerializer serializer(stream); serializer.Serialize(shader); return byteArray; } - ShaderAst UnserializeShader(const ByteArray& data) + ShaderAst UnserializeShader(ByteStream& stream) { - ShaderUnserializer unserializer(data); + ShaderUnserializer unserializer(stream); return unserializer.Unserialize(); } }