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;