From b5fb11b5c26c67ebaa2cf33caf163db9625bfd05 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 25 Nov 2015 18:19:38 +0100 Subject: [PATCH] Core/Serializer: Add FlushBits method Former-commit-id: 64b8d4277001ab763dc92c0a157ebce72a8bfef8 --- include/Nazara/Core/Serializer.hpp | 2 ++ include/Nazara/Core/Serializer.inl | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/include/Nazara/Core/Serializer.hpp b/include/Nazara/Core/Serializer.hpp index 994e85a19..ae35f2254 100644 --- a/include/Nazara/Core/Serializer.hpp +++ b/include/Nazara/Core/Serializer.hpp @@ -25,6 +25,8 @@ namespace Nz inline Endianness GetDataEndianness() const; inline Stream& GetStream() const; + inline bool FlushBits(); + inline void SetDataEndianness(Endianness endiannes); inline void SetStream(Stream& stream); diff --git a/include/Nazara/Core/Serializer.inl b/include/Nazara/Core/Serializer.inl index 168d7f812..69c433ad0 100644 --- a/include/Nazara/Core/Serializer.inl +++ b/include/Nazara/Core/Serializer.inl @@ -16,13 +16,8 @@ namespace Nz inline Serializer::~Serializer() { - if (m_serializationContext.currentBitPos != 8) - { - m_serializationContext.currentBitPos = 8; //< To prevent Serialize to flush bits itself - - if (!Serialize(m_serializationContext, m_serializationContext.currentByte)) - NazaraWarning("Failed to flush bits at serializer destruction"); - } + if (!FlushBits()) + NazaraWarning("Failed to flush bits at serializer destruction"); } inline Endianness Serializer::GetDataEndianness() const @@ -35,6 +30,19 @@ namespace Nz return *m_serializationContext.stream; } + inline bool Serializer::FlushBits() + { + if (m_serializationContext.currentBitPos != 8) + { + m_serializationContext.currentBitPos = 8; //< To prevent Serialize to flush bits itself + + if (!Serialize(m_serializationContext, m_serializationContext.currentByte)) + return false; + } + + return true; + } + inline void Serializer::SetDataEndianness(Endianness endiannes) { m_serializationContext.endianness = endiannes;