UnitTests: Fix errors
Former-commit-id: fb2340e5c7c264193f1ac363d6387486215aef7e
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Enums.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <functional>
|
||||
#include <tuple>
|
||||
#include <type_traits>
|
||||
|
||||
@@ -209,14 +209,8 @@ namespace Nz
|
||||
template<typename T>
|
||||
std::enable_if_t<std::is_arithmetic<T>::value, bool> Serialize(SerializationContext& context, T value)
|
||||
{
|
||||
// Flush bits if a writing is in progress
|
||||
if (context.currentBitPos != 8)
|
||||
{
|
||||
context.currentBitPos = 8;
|
||||
|
||||
if (!Serialize<UInt8>(context, context.currentByte))
|
||||
NazaraWarning("Failed to flush bits");
|
||||
}
|
||||
// Flush bits in case a writing is in progress
|
||||
context.FlushBits();
|
||||
|
||||
if (context.endianness != Endianness_Unknown && context.endianness != GetPlatformEndianness())
|
||||
SwapBytes(&value, sizeof(T));
|
||||
@@ -269,8 +263,7 @@ namespace Nz
|
||||
{
|
||||
NazaraAssert(value, "Invalid data pointer");
|
||||
|
||||
// Reset bit position
|
||||
context.currentBitPos = 8;
|
||||
context.ResetBitPosition();
|
||||
|
||||
if (context.stream->Read(value, sizeof(T)) == sizeof(T))
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/ByteArray.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <memory>
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#define NAZARA_SERIALIZATION_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Config.hpp>
|
||||
#include <Nazara/Core/Endianness.hpp>
|
||||
#include <functional>
|
||||
#include <tuple>
|
||||
@@ -17,13 +18,18 @@ namespace Nz
|
||||
{
|
||||
class Stream;
|
||||
|
||||
struct SerializationContext
|
||||
struct NAZARA_CORE_API SerializationContext
|
||||
{
|
||||
Stream* stream;
|
||||
Endianness endianness = Endianness_BigEndian; //< Default to Big Endian encoding
|
||||
UInt8 currentBitPos = 8; //< 8 means no bit is currently wrote
|
||||
UInt8 currentByte; //< Undefined value, will be initialized at the first bit write
|
||||
|
||||
void FlushBits();
|
||||
inline void ResetBitPosition();
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/Core/SerializationContext.inl>
|
||||
|
||||
#endif // NAZARA_SERIALIZATION_HPP
|
||||
24
include/Nazara/Core/SerializationContext.inl
Normal file
24
include/Nazara/Core/SerializationContext.inl
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright (C) 2015 Jérôme Leclercq
|
||||
// This file is part of the "Nazara Engine - Core module"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
/*!
|
||||
* \brief Reset the current bit cursor
|
||||
|
||||
* \remark This function only reset the cursor position, it doesn't do any writing
|
||||
if you wish to write all bits and reset bit position, call FlushBits
|
||||
|
||||
\see FlushBits
|
||||
*/
|
||||
inline void SerializationContext::ResetBitPosition()
|
||||
{
|
||||
currentBitPos = 8;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/Core/DebugOff.hpp>
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Endianness.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <atomic>
|
||||
#include <iosfwd>
|
||||
#include <memory>
|
||||
|
||||
Reference in New Issue
Block a user