From ed961f5ba8194ad60f6d579c9dea45042b7fd39a Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 20 Nov 2015 13:52:49 +0100 Subject: [PATCH] Core: Merge InputStream and OutputStream to Stream Remove serialization support from Stream Former-commit-id: 7a761e4fcd07cab561f13e4709c4492ed18da88a --- include/Nazara/Audio/Music.hpp | 2 +- include/Nazara/Audio/Sound.hpp | 2 +- include/Nazara/Audio/SoundBuffer.hpp | 4 +- include/Nazara/Audio/SoundEmitter.hpp | 1 - include/Nazara/Core.hpp | 2 - include/Nazara/Core/Algorithm.inl | 3 +- include/Nazara/Core/ByteArray.inl | 7 ++ include/Nazara/Core/Enums.hpp | 6 +- include/Nazara/Core/File.hpp | 15 ++- include/Nazara/Core/InputStream.hpp | 45 --------- include/Nazara/Core/InputStream.inl | 63 ------------ include/Nazara/Core/MemoryStream.hpp | 16 ++-- include/Nazara/Core/MemoryView.hpp | 10 +- include/Nazara/Core/OutputStream.hpp | 47 --------- include/Nazara/Core/OutputStream.inl | 63 ------------ include/Nazara/Core/ResourceLoader.hpp | 8 +- include/Nazara/Core/ResourceLoader.inl | 4 +- include/Nazara/Core/Serialization.hpp | 7 +- include/Nazara/Core/Stream.hpp | 26 ++++- include/Nazara/Core/Stream.inl | 44 +++++++-- include/Nazara/Graphics/Material.hpp | 2 +- include/Nazara/Graphics/Model.hpp | 2 +- include/Nazara/Graphics/SkeletalModel.hpp | 2 +- include/Nazara/Lua/LuaInstance.hpp | 4 +- include/Nazara/Renderer/Texture.hpp | 8 +- include/Nazara/Utility/Animation.hpp | 2 +- include/Nazara/Utility/Font.hpp | 2 +- .../Nazara/Utility/Formats/MD5AnimParser.hpp | 6 +- .../Nazara/Utility/Formats/MD5MeshParser.hpp | 6 +- include/Nazara/Utility/Formats/MTLParser.hpp | 6 +- include/Nazara/Utility/Formats/OBJParser.hpp | 6 +- include/Nazara/Utility/Image.hpp | 8 +- include/Nazara/Utility/Mesh.hpp | 4 +- src/Nazara/Audio/Formats/sndfileLoader.cpp | 22 ++--- src/Nazara/Audio/Music.cpp | 2 +- src/Nazara/Audio/Sound.cpp | 2 +- src/Nazara/Audio/SoundBuffer.cpp | 2 +- src/Nazara/Core/File.cpp | 96 +++++++++---------- src/Nazara/Core/InputStream.cpp | 71 -------------- src/Nazara/Core/MemoryStream.cpp | 28 +++--- src/Nazara/Core/MemoryView.cpp | 21 +++- src/Nazara/Core/OutputStream.cpp | 40 -------- src/Nazara/Core/Stream.cpp | 84 ++++++++++++++++ src/Nazara/Graphics/Formats/MeshLoader.cpp | 8 +- src/Nazara/Graphics/Formats/OBJLoader.cpp | 4 +- src/Nazara/Graphics/Formats/TextureLoader.cpp | 4 +- src/Nazara/Graphics/Material.cpp | 2 +- src/Nazara/Graphics/Model.cpp | 2 +- src/Nazara/Graphics/SkeletalModel.cpp | 2 +- src/Nazara/Lua/LuaInstance.cpp | 4 +- src/Nazara/Renderer/Texture.cpp | 8 +- src/Nazara/Utility/Animation.cpp | 2 +- src/Nazara/Utility/Font.cpp | 2 +- src/Nazara/Utility/Formats/DDSLoader.cpp | 6 +- src/Nazara/Utility/Formats/FreeTypeLoader.cpp | 12 +-- src/Nazara/Utility/Formats/MD2Loader.cpp | 6 +- src/Nazara/Utility/Formats/MD5AnimLoader.cpp | 4 +- src/Nazara/Utility/Formats/MD5AnimParser.cpp | 10 +- src/Nazara/Utility/Formats/MD5MeshLoader.cpp | 4 +- src/Nazara/Utility/Formats/MD5MeshParser.cpp | 10 +- src/Nazara/Utility/Formats/MTLParser.cpp | 10 +- src/Nazara/Utility/Formats/OBJParser.cpp | 10 +- src/Nazara/Utility/Formats/PCXLoader.cpp | 6 +- src/Nazara/Utility/Formats/STBLoader.cpp | 12 +-- src/Nazara/Utility/Image.cpp | 6 +- src/Nazara/Utility/Mesh.cpp | 2 +- 66 files changed, 372 insertions(+), 565 deletions(-) delete mode 100644 include/Nazara/Core/InputStream.hpp delete mode 100644 include/Nazara/Core/InputStream.inl delete mode 100644 include/Nazara/Core/OutputStream.hpp delete mode 100644 include/Nazara/Core/OutputStream.inl delete mode 100644 src/Nazara/Core/InputStream.cpp delete mode 100644 src/Nazara/Core/OutputStream.cpp diff --git a/include/Nazara/Audio/Music.hpp b/include/Nazara/Audio/Music.hpp index b8b17956e..50935ac79 100644 --- a/include/Nazara/Audio/Music.hpp +++ b/include/Nazara/Audio/Music.hpp @@ -55,7 +55,7 @@ namespace Nz bool OpenFromFile(const String& filePath, const MusicParams& params = MusicParams()); bool OpenFromMemory(const void* data, std::size_t size, const MusicParams& params = MusicParams()); - bool OpenFromStream(InputStream& stream, const MusicParams& params = MusicParams()); + bool OpenFromStream(Stream& stream, const MusicParams& params = MusicParams()); void Pause(); void Play(); diff --git a/include/Nazara/Audio/Sound.hpp b/include/Nazara/Audio/Sound.hpp index a8de761de..23d6f11bd 100644 --- a/include/Nazara/Audio/Sound.hpp +++ b/include/Nazara/Audio/Sound.hpp @@ -36,7 +36,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const SoundBufferParams& params = SoundBufferParams()); bool LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params = SoundBufferParams()); - bool LoadFromStream(InputStream& stream, const SoundBufferParams& params = SoundBufferParams()); + bool LoadFromStream(Stream& stream, const SoundBufferParams& params = SoundBufferParams()); void Pause(); void Play(); diff --git a/include/Nazara/Audio/SoundBuffer.hpp b/include/Nazara/Audio/SoundBuffer.hpp index 883825524..b144e71ad 100644 --- a/include/Nazara/Audio/SoundBuffer.hpp +++ b/include/Nazara/Audio/SoundBuffer.hpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -18,6 +17,7 @@ #include #include #include +#include namespace Nz { @@ -67,7 +67,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const SoundBufferParams& params = SoundBufferParams()); bool LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params = SoundBufferParams()); - bool LoadFromStream(InputStream& stream, const SoundBufferParams& params = SoundBufferParams()); + bool LoadFromStream(Stream& stream, const SoundBufferParams& params = SoundBufferParams()); static bool IsFormatSupported(AudioFormat format); template static SoundBufferRef New(Args&&... args); diff --git a/include/Nazara/Audio/SoundEmitter.hpp b/include/Nazara/Audio/SoundEmitter.hpp index d05045114..d56cd1bca 100644 --- a/include/Nazara/Audio/SoundEmitter.hpp +++ b/include/Nazara/Audio/SoundEmitter.hpp @@ -10,7 +10,6 @@ #include #include #include -#include #include ///TODO: Faire hériter SoundEmitter de Node diff --git a/include/Nazara/Core.hpp b/include/Nazara/Core.hpp index 7f16775d8..a1d87c0a2 100644 --- a/include/Nazara/Core.hpp +++ b/include/Nazara/Core.hpp @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include @@ -62,7 +61,6 @@ #include #include #include -#include #include #include #include diff --git a/include/Nazara/Core/Algorithm.inl b/include/Nazara/Core/Algorithm.inl index 4c2f81f7e..6e3d8853a 100644 --- a/include/Nazara/Core/Algorithm.inl +++ b/include/Nazara/Core/Algorithm.inl @@ -8,8 +8,7 @@ #include #include -#include -#include +#include #include namespace Nz diff --git a/include/Nazara/Core/ByteArray.inl b/include/Nazara/Core/ByteArray.inl index ada835e3e..19d7e115b 100644 --- a/include/Nazara/Core/ByteArray.inl +++ b/include/Nazara/Core/ByteArray.inl @@ -59,6 +59,13 @@ namespace Nz return m_array.back(); } + inline void ByteArray::Clear(bool keepBuffer) + { + m_array.clear(); + if (!keepBuffer) + m_array.shrink_to_fit(); + } + inline ByteArray::iterator ByteArray::Erase(const_iterator pos) { return m_array.erase(pos); diff --git a/include/Nazara/Core/Enums.hpp b/include/Nazara/Core/Enums.hpp index 02c92af35..a5de16a44 100644 --- a/include/Nazara/Core/Enums.hpp +++ b/include/Nazara/Core/Enums.hpp @@ -80,11 +80,12 @@ namespace Nz OpenMode_Append = 0x01, // Empêche l'écriture sur la partie déjà existante et met le curseur à la fin OpenMode_Lock = 0x02, // Empêche le fichier d'être modifié tant qu'il est ouvert OpenMode_ReadOnly = 0x04, // Ouvre uniquement en lecture - OpenMode_ReadWrite = 0x08, // Ouvre en lecture/écriture OpenMode_Text = 0x10, // Ouvre en mode texte OpenMode_Truncate = 0x20, // Créé le fichier s'il n'existe pas et le vide s'il existe OpenMode_WriteOnly = 0x40, // Ouvre uniquement en écriture, créé le fichier s'il n'existe pas + OpenMode_ReadWrite = OpenMode_ReadOnly | OpenMode_WriteOnly, // Ouvre en lecture/écriture + OpenMode_Max = OpenMode_WriteOnly }; @@ -173,7 +174,8 @@ namespace Nz { StreamOption_None = 0, - StreamOption_Text = 0x1, + StreamOption_Sequential = 0x1, + StreamOption_Text = 0x2, StreamOption_Max = StreamOption_Text*2-1 }; diff --git a/include/Nazara/Core/File.hpp b/include/Nazara/Core/File.hpp index d0a66e09c..02ecb153a 100644 --- a/include/Nazara/Core/File.hpp +++ b/include/Nazara/Core/File.hpp @@ -11,8 +11,7 @@ #include #include #include -#include -#include +#include #include #if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_FILE @@ -27,7 +26,7 @@ namespace Nz { class FileImpl; - class NAZARA_CORE_API File : public InputStream, public OutputStream + class NAZARA_CORE_API File : public Stream { public: File(); @@ -47,8 +46,6 @@ namespace Nz bool Exists() const; - void Flush() override; - time_t GetCreationTime() const; UInt64 GetCursorPos() const override; String GetDirectory() const override; @@ -63,16 +60,12 @@ namespace Nz bool Open(unsigned int openMode = OpenMode_Current); bool Open(const String& filePath, unsigned int openMode = OpenMode_Current); - std::size_t Read(void* buffer, std::size_t size) override; bool Rename(const String& newFilePath); bool SetCursorPos(CursorPosition pos, Int64 offset = 0); bool SetCursorPos(UInt64 offset) override; bool SetFile(const String& filePath); - using OutputStream::Write; - std::size_t Write(const void* buffer, std::size_t size) override; - File& operator=(const String& filePath); File& operator=(const File&) = delete; File& operator=(File&& file) noexcept; @@ -96,6 +89,10 @@ namespace Nz private: NazaraMutexAttrib(m_mutex, mutable) + void FlushStream() override; + std::size_t ReadBlock(void* buffer, std::size_t size) override; + std::size_t WriteBlock(const void* buffer, std::size_t size) override; + String m_filePath; FileImpl* m_impl; }; diff --git a/include/Nazara/Core/InputStream.hpp b/include/Nazara/Core/InputStream.hpp deleted file mode 100644 index 19555cac4..000000000 --- a/include/Nazara/Core/InputStream.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// 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 - -#pragma once - -#ifndef NAZARA_INPUTSTREAM_HPP -#define NAZARA_INPUTSTREAM_HPP - -#include -#include -#include - -namespace Nz -{ - class NAZARA_CORE_API InputStream : virtual public Stream - { - public: - inline InputStream(const InputStream& stream); - inline InputStream(InputStream&& stream) noexcept; - virtual ~InputStream(); - - virtual bool EndOfStream() const = 0; - - virtual UInt64 GetSize() const = 0; - - virtual std::size_t Read(void* buffer, std::size_t size) = 0; - virtual String ReadLine(unsigned int lineSize = 0); - - template - InputStream& operator>>(T& value); - - inline InputStream& operator=(const InputStream& stream); - inline InputStream& operator=(InputStream&& stream) noexcept; - - protected: - inline InputStream(); - - UnserializationContext m_unserializationContext; - }; -} - -#include - -#endif // NAZARA_INPUTSTREAM_HPP diff --git a/include/Nazara/Core/InputStream.inl b/include/Nazara/Core/InputStream.inl deleted file mode 100644 index 00d1e2131..000000000 --- a/include/Nazara/Core/InputStream.inl +++ /dev/null @@ -1,63 +0,0 @@ -// 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 -#include -#include - -namespace Nz -{ - inline InputStream::InputStream() : - Stream(OpenMode_Current) - { - m_unserializationContext.stream = this; - } - - inline InputStream::InputStream(const InputStream& stream) : - Stream(stream), - m_unserializationContext(stream.m_unserializationContext) - { - m_unserializationContext.stream = this; - } - - inline InputStream::InputStream(InputStream&& stream) noexcept : - Stream(std::move(stream)), - m_unserializationContext(std::move(stream.m_unserializationContext)) - { - m_unserializationContext.stream = this; - } - - template - InputStream& InputStream::operator>>(T& value) - { - m_unserializationContext.endianness = m_dataEndianness; //< In case m_dataEndianness changed - - if (!Unserialize(m_unserializationContext, &value)) - NazaraError("Failed to unserialize value"); - - return *this; - } - - inline InputStream& InputStream::operator=(const InputStream& stream) - { - Stream::operator=(stream); - - m_unserializationContext = stream.m_unserializationContext; - m_unserializationContext.stream = this; - - return *this; - } - - inline InputStream& InputStream::operator=(InputStream&& stream) noexcept - { - Stream::operator=(std::move(stream)); - - m_unserializationContext = std::move(stream.m_unserializationContext); - m_unserializationContext.stream = this; - - return *this; - } -} - -#include diff --git a/include/Nazara/Core/MemoryStream.hpp b/include/Nazara/Core/MemoryStream.hpp index 861d28d40..7328b7707 100644 --- a/include/Nazara/Core/MemoryStream.hpp +++ b/include/Nazara/Core/MemoryStream.hpp @@ -9,12 +9,11 @@ #include #include -#include -#include +#include namespace Nz { - class NAZARA_CORE_API MemoryStream : public InputStream, public OutputStream + class NAZARA_CORE_API MemoryStream : public Stream { public: MemoryStream(); @@ -27,23 +26,22 @@ namespace Nz bool EndOfStream() const override; - void Flush() override; const ByteArray& GetBuffer() const; const UInt8* GetData() const; UInt64 GetCursorPos() const override; UInt64 GetSize() const override; - std::size_t Read(void* buffer, std::size_t size) override; - bool SetCursorPos(UInt64 offset) override; - std::size_t Write(const void* buffer, std::size_t size) override; - MemoryStream& operator=(const MemoryStream&) = default; MemoryStream& operator=(MemoryStream&&) = default; private: + void FlushStream() override; + std::size_t ReadBlock(void* buffer, std::size_t size) override; + std::size_t WriteBlock(const void* buffer, std::size_t size) override; + ByteArray m_buffer; UInt64 m_pos; }; @@ -55,6 +53,6 @@ namespace Nz NAZARA_CORE_API bool Unserialize(UnserializationContext& context, String* string); } -#include +#include #endif // NAZARA_MEMORYSTREAM_HPP diff --git a/include/Nazara/Core/MemoryView.hpp b/include/Nazara/Core/MemoryView.hpp index 47fdc87f0..e746ef47a 100644 --- a/include/Nazara/Core/MemoryView.hpp +++ b/include/Nazara/Core/MemoryView.hpp @@ -8,11 +8,11 @@ #define NAZARA_MEMORYVIEW_HPP #include -#include +#include namespace Nz { - class NAZARA_CORE_API MemoryView : public InputStream + class NAZARA_CORE_API MemoryView : public Stream { public: MemoryView(const void* ptr, UInt64 size); @@ -25,14 +25,16 @@ namespace Nz UInt64 GetCursorPos() const override; UInt64 GetSize() const override; - std::size_t Read(void* buffer, std::size_t size) override; - bool SetCursorPos(UInt64 offset) override; MemoryView& operator=(const MemoryView&) = delete; MemoryView& operator=(MemoryView&&) = delete; ///TODO private: + void FlushStream() override; + std::size_t ReadBlock(void* buffer, std::size_t size) override; + std::size_t WriteBlock(const void* buffer, std::size_t size) override; + const UInt8* m_ptr; UInt64 m_pos; UInt64 m_size; diff --git a/include/Nazara/Core/OutputStream.hpp b/include/Nazara/Core/OutputStream.hpp deleted file mode 100644 index 47e7c4bde..000000000 --- a/include/Nazara/Core/OutputStream.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// 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 - -#pragma once - -#ifndef NAZARA_OUTPUTSTREAM_HPP -#define NAZARA_OUTPUTSTREAM_HPP - -#include -#include -#include - -namespace Nz -{ - class ByteArray; - class String; - - class NAZARA_CORE_API OutputStream : virtual public Stream - { - public: - inline OutputStream(const OutputStream& stream); - inline OutputStream(OutputStream&& stream) noexcept; - virtual ~OutputStream(); - - virtual void Flush() = 0; - - bool Write(const ByteArray& byteArray); - bool Write(const String& string); - virtual std::size_t Write(const void* buffer, std::size_t size) = 0; - - template - OutputStream& operator<<(const T& value); - - inline OutputStream& operator=(const OutputStream& stream); - inline OutputStream& operator=(OutputStream&& stream) noexcept; - - protected: - inline OutputStream(); - - SerializationContext m_serializationContext; - }; -} - -#include - -#endif // NAZARA_OUTPUTSTREAM_HPP diff --git a/include/Nazara/Core/OutputStream.inl b/include/Nazara/Core/OutputStream.inl deleted file mode 100644 index 3d8cbb65a..000000000 --- a/include/Nazara/Core/OutputStream.inl +++ /dev/null @@ -1,63 +0,0 @@ -// 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 -#include -#include - -namespace Nz -{ - inline OutputStream::OutputStream() : - Stream(OpenMode_Current) - { - m_serializationContext.stream = this; - } - - inline OutputStream::OutputStream(const OutputStream& stream) : - Stream(stream), - m_serializationContext(stream.m_serializationContext) - { - m_serializationContext.stream = this; - } - - inline OutputStream::OutputStream(OutputStream&& stream) noexcept : - Stream(std::move(stream)), - m_serializationContext(std::move(stream.m_serializationContext)) - { - m_serializationContext.stream = this; - } - - template - OutputStream& OutputStream::operator<<(const T& value) - { - m_serializationContext.endianness = m_dataEndianness; //< In case m_dataEndianness changed - - if (!Serialize(m_serializationContext, value)) - NazaraError("Failed to serialize value"); - - return *this; - } - - inline OutputStream& OutputStream::operator=(const OutputStream& stream) - { - Stream::operator=(stream); - - m_serializationContext = stream.m_serializationContext; - m_serializationContext.stream = this; - - return *this; - } - - inline OutputStream& OutputStream::operator=(OutputStream&& stream) noexcept - { - Stream::operator=(std::move(stream)); - - m_serializationContext = std::move(stream.m_serializationContext); - m_serializationContext.stream = this; - - return *this; - } -} - -#include diff --git a/include/Nazara/Core/ResourceLoader.hpp b/include/Nazara/Core/ResourceLoader.hpp index 64d9d81d7..73b2dfa52 100644 --- a/include/Nazara/Core/ResourceLoader.hpp +++ b/include/Nazara/Core/ResourceLoader.hpp @@ -16,7 +16,7 @@ namespace Nz { - class InputStream; + class Stream; template class ResourceLoader @@ -27,8 +27,8 @@ namespace Nz using ExtensionGetter = bool (*)(const String& extension); using FileLoader = bool (*)(Type* resource, const String& filePath, const Parameters& parameters); using MemoryLoader = bool (*)(Type* resource, const void* data, std::size_t size, const Parameters& parameters); - using StreamChecker = Ternary (*)(InputStream& stream, const Parameters& parameters); - using StreamLoader = bool (*)(Type* resource, InputStream& stream, const Parameters& parameters); + using StreamChecker = Ternary (*)(Stream& stream, const Parameters& parameters); + using StreamLoader = bool (*)(Type* resource, Stream& stream, const Parameters& parameters); ResourceLoader() = delete; ~ResourceLoader() = delete; @@ -37,7 +37,7 @@ namespace Nz static bool LoadFromFile(Type* resource, const String& filePath, const Parameters& parameters = Parameters()); static bool LoadFromMemory(Type* resource, const void* data, unsigned int size, const Parameters& parameters = Parameters()); - static bool LoadFromStream(Type* resource, InputStream& stream, const Parameters& parameters = Parameters()); + static bool LoadFromStream(Type* resource, Stream& stream, const Parameters& parameters = Parameters()); static void RegisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader = nullptr, MemoryLoader memoryLoader = nullptr); static void UnregisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader = nullptr, MemoryLoader memoryLoader = nullptr); diff --git a/include/Nazara/Core/ResourceLoader.inl b/include/Nazara/Core/ResourceLoader.inl index 3f78ca7ff..e3f7c4577 100644 --- a/include/Nazara/Core/ResourceLoader.inl +++ b/include/Nazara/Core/ResourceLoader.inl @@ -5,8 +5,8 @@ #include #include #include -#include #include +#include #include namespace Nz @@ -199,7 +199,7 @@ namespace Nz } template - bool ResourceLoader::LoadFromStream(Type* resource, InputStream& stream, const Parameters& parameters) + bool ResourceLoader::LoadFromStream(Type* resource, Stream& stream, const Parameters& parameters) { #if NAZARA_CORE_SAFE if (!parameters.IsValid()) diff --git a/include/Nazara/Core/Serialization.hpp b/include/Nazara/Core/Serialization.hpp index fc82cc0c7..36e77caea 100644 --- a/include/Nazara/Core/Serialization.hpp +++ b/include/Nazara/Core/Serialization.hpp @@ -15,18 +15,17 @@ namespace Nz { - class InputStream; - class OutputStream; + class Stream; struct SerializationContext { - OutputStream* stream; + Stream* stream; Endianness endianness; }; struct UnserializationContext { - InputStream* stream; + Stream* stream; Endianness endianness; }; } diff --git a/include/Nazara/Core/Stream.hpp b/include/Nazara/Core/Stream.hpp index 0abaaab63..ff4195802 100644 --- a/include/Nazara/Core/Stream.hpp +++ b/include/Nazara/Core/Stream.hpp @@ -13,6 +13,7 @@ namespace Nz { + class ByteArray; class String; //< Do not include String.hpp in this file class NAZARA_CORE_API Stream @@ -22,19 +23,33 @@ namespace Nz Stream(Stream&&) = default; virtual ~Stream(); + virtual bool EndOfStream() const = 0; + + inline void EnableTextMode(bool textMode); + + inline void Flush(); + virtual UInt64 GetCursorPos() const = 0; virtual String GetDirectory() const; virtual String GetPath() const; - inline Endianness GetDataEndianness() const; inline UInt32 GetOpenMode() const; inline UInt32 GetStreamOptions() const; + virtual UInt64 GetSize() const = 0; + + inline std::size_t Read(void* buffer, std::size_t size); + virtual String ReadLine(unsigned int lineSize = 0); + inline bool IsReadable() const; + inline bool IsSequential() const; + inline bool IsTextModeEnabled() const; inline bool IsWritable() const; virtual bool SetCursorPos(UInt64 offset) = 0; - inline void SetDataEndianness(Endianness endiannes); - inline void SetStreamOptions(UInt32 options); + + bool Write(const ByteArray& byteArray); + bool Write(const String& string); + inline std::size_t Write(const void* buffer, std::size_t size); Stream& operator=(const Stream&) = default; Stream& operator=(Stream&&) = default; @@ -42,7 +57,10 @@ namespace Nz protected: inline Stream(UInt32 openMode); - Endianness m_dataEndianness; + virtual void FlushStream() = 0; + virtual std::size_t ReadBlock(void* buffer, std::size_t size) = 0; + virtual std::size_t WriteBlock(const void* buffer, std::size_t size) = 0; + UInt32 m_openMode; UInt32 m_streamOptions; }; diff --git a/include/Nazara/Core/Stream.inl b/include/Nazara/Core/Stream.inl index 4c9bb138f..a7e17a099 100644 --- a/include/Nazara/Core/Stream.inl +++ b/include/Nazara/Core/Stream.inl @@ -2,18 +2,29 @@ // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include + namespace Nz { inline Stream::Stream(UInt32 openMode) : - m_dataEndianness(Endianness_Unknown), m_openMode(openMode), m_streamOptions(0) { } - inline Endianness Stream::GetDataEndianness() const + inline void Stream::EnableTextMode(bool textMode) { - return m_dataEndianness; + if (textMode) + m_streamOptions |= StreamOption_Text; + else + m_streamOptions &= ~StreamOption_Text; + } + + inline void Stream::Flush() + { + NazaraAssert(IsWritable(), "Stream is not writable"); + + FlushStream(); } inline UInt32 Stream::GetOpenMode() const @@ -28,21 +39,36 @@ namespace Nz inline bool Stream::IsReadable() const { - return m_openMode & OpenMode_ReadOnly || m_openMode & OpenMode_ReadWrite; + return (m_openMode & OpenMode_ReadOnly) != 0; + } + + inline bool Stream::IsSequential() const + { + return (m_streamOptions & StreamOption_Sequential) != 0; + } + + inline bool Stream::IsTextModeEnabled() const + { + return (m_streamOptions & StreamOption_Text) != 0; } inline bool Stream::IsWritable() const { - return m_openMode & OpenMode_ReadWrite || m_openMode & OpenMode_WriteOnly; + return (m_openMode & OpenMode_WriteOnly) != 0; } - inline void Stream::SetDataEndianness(Endianness endiannes) + inline std::size_t Stream::Read(void* buffer, std::size_t size) { - m_dataEndianness = endiannes; + NazaraAssert(IsReadable(), "Stream is not readable"); + + return ReadBlock(buffer, size); } - inline void Stream::SetStreamOptions(UInt32 options) + inline std::size_t Stream::Write(const void* buffer, std::size_t size) { - m_streamOptions = options; + NazaraAssert(IsWritable(), "Stream is not writable"); + + return WriteBlock(buffer, size); } + } diff --git a/include/Nazara/Graphics/Material.hpp b/include/Nazara/Graphics/Material.hpp index 7e55f285a..8f6cdb920 100644 --- a/include/Nazara/Graphics/Material.hpp +++ b/include/Nazara/Graphics/Material.hpp @@ -106,7 +106,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const MaterialParams& params = MaterialParams()); bool LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params = MaterialParams()); - bool LoadFromStream(InputStream& stream, const MaterialParams& params = MaterialParams()); + bool LoadFromStream(Stream& stream, const MaterialParams& params = MaterialParams()); void Reset(); diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index 2655fdedd..9f7506c12 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -58,7 +58,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const ModelParameters& params = ModelParameters()); bool LoadFromMemory(const void* data, std::size_t size, const ModelParameters& params = ModelParameters()); - bool LoadFromStream(InputStream& stream, const ModelParameters& params = ModelParameters()); + bool LoadFromStream(Stream& stream, const ModelParameters& params = ModelParameters()); void Reset(); diff --git a/include/Nazara/Graphics/SkeletalModel.hpp b/include/Nazara/Graphics/SkeletalModel.hpp index 976411133..059d6b835 100644 --- a/include/Nazara/Graphics/SkeletalModel.hpp +++ b/include/Nazara/Graphics/SkeletalModel.hpp @@ -59,7 +59,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const SkeletalModelParameters& params = SkeletalModelParameters()); bool LoadFromMemory(const void* data, std::size_t size, const SkeletalModelParameters& params = SkeletalModelParameters()); - bool LoadFromStream(InputStream& stream, const SkeletalModelParameters& params = SkeletalModelParameters()); + bool LoadFromStream(Stream& stream, const SkeletalModelParameters& params = SkeletalModelParameters()); void Reset(); diff --git a/include/Nazara/Lua/LuaInstance.hpp b/include/Nazara/Lua/LuaInstance.hpp index 2b8b14f84..24e9a4f7d 100644 --- a/include/Nazara/Lua/LuaInstance.hpp +++ b/include/Nazara/Lua/LuaInstance.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include #include @@ -73,7 +73,7 @@ namespace Nz bool Execute(const String& code); bool ExecuteFromFile(const String& filePath); bool ExecuteFromMemory(const void* data, unsigned int size); - bool ExecuteFromStream(InputStream& stream); + bool ExecuteFromStream(Stream& stream); int GetAbsIndex(int index) const; LuaType GetField(const char* fieldName, int index = -1) const; diff --git a/include/Nazara/Renderer/Texture.hpp b/include/Nazara/Renderer/Texture.hpp index 1bf4d9877..15f3c11ec 100644 --- a/include/Nazara/Renderer/Texture.hpp +++ b/include/Nazara/Renderer/Texture.hpp @@ -75,24 +75,24 @@ namespace Nz bool LoadFromFile(const String& filePath, const ImageParams& params = ImageParams(), bool generateMipmaps = true); bool LoadFromImage(const Image& image, bool generateMipmaps = true); bool LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams(), bool generateMipmaps = true); - bool LoadFromStream(InputStream& stream, const ImageParams& params = ImageParams(), bool generateMipmaps = true); + bool LoadFromStream(Stream& stream, const ImageParams& params = ImageParams(), bool generateMipmaps = true); // LoadArray bool LoadArrayFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); bool LoadArrayFromImage(const Image& image, bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); bool LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromStream(InputStream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + bool LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); // LoadCubemap bool LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); bool LoadCubemapFromImage(const Image& image, bool generateMipmaps = true, const CubemapParams& params = CubemapParams()); bool LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - bool LoadCubemapFromStream(InputStream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); + bool LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); // LoadFace bool LoadFaceFromFile(CubemapFace face, const String& filePath, const ImageParams& params = ImageParams()); bool LoadFaceFromMemory(CubemapFace face, const void* data, std::size_t size, const ImageParams& params = ImageParams()); - bool LoadFaceFromStream(CubemapFace face, InputStream& stream, const ImageParams& params = ImageParams()); + bool LoadFaceFromStream(CubemapFace face, Stream& stream, const ImageParams& params = ImageParams()); bool SetMipmapRange(UInt8 minLevel, UInt8 maxLevel); diff --git a/include/Nazara/Utility/Animation.hpp b/include/Nazara/Utility/Animation.hpp index b4f5dde47..162d86e35 100644 --- a/include/Nazara/Utility/Animation.hpp +++ b/include/Nazara/Utility/Animation.hpp @@ -83,7 +83,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const AnimationParams& params = AnimationParams()); bool LoadFromMemory(const void* data, std::size_t size, const AnimationParams& params = AnimationParams()); - bool LoadFromStream(InputStream& stream, const AnimationParams& params = AnimationParams()); + bool LoadFromStream(Stream& stream, const AnimationParams& params = AnimationParams()); void RemoveSequence(const String& sequenceName); void RemoveSequence(unsigned int index); diff --git a/include/Nazara/Utility/Font.hpp b/include/Nazara/Utility/Font.hpp index b515b5c21..ef801d5a2 100644 --- a/include/Nazara/Utility/Font.hpp +++ b/include/Nazara/Utility/Font.hpp @@ -78,7 +78,7 @@ namespace Nz // Open bool OpenFromFile(const String& filePath, const FontParams& params = FontParams()); bool OpenFromMemory(const void* data, std::size_t size, const FontParams& params = FontParams()); - bool OpenFromStream(InputStream& stream, const FontParams& params = FontParams()); + bool OpenFromStream(Stream& stream, const FontParams& params = FontParams()); void SetAtlas(const std::shared_ptr& atlas); void SetGlyphBorder(unsigned int borderSize); diff --git a/include/Nazara/Utility/Formats/MD5AnimParser.hpp b/include/Nazara/Utility/Formats/MD5AnimParser.hpp index 1187ea886..cfba9fdc4 100644 --- a/include/Nazara/Utility/Formats/MD5AnimParser.hpp +++ b/include/Nazara/Utility/Formats/MD5AnimParser.hpp @@ -8,7 +8,7 @@ #define NAZARA_FORMATS_MD5ANIMPARSER_HPP #include -#include +#include #include #include #include @@ -42,7 +42,7 @@ namespace Nz unsigned int index; }; - MD5AnimParser(InputStream& stream); + MD5AnimParser(Stream& stream); ~MD5AnimParser(); Ternary Check(); @@ -69,7 +69,7 @@ namespace Nz std::vector m_animatedComponents; std::vector m_frames; std::vector m_joints; - InputStream& m_stream; + Stream& m_stream; String m_currentLine; bool m_keepLastLine; unsigned int m_frameIndex; diff --git a/include/Nazara/Utility/Formats/MD5MeshParser.hpp b/include/Nazara/Utility/Formats/MD5MeshParser.hpp index 9c9fb3f1a..5d114bdbb 100644 --- a/include/Nazara/Utility/Formats/MD5MeshParser.hpp +++ b/include/Nazara/Utility/Formats/MD5MeshParser.hpp @@ -8,7 +8,7 @@ #define NAZARA_FORMATS_MD5MESHPARSER_HPP #include -#include +#include #include #include #include @@ -52,7 +52,7 @@ namespace Nz String shader; }; - MD5MeshParser(InputStream& stream); + MD5MeshParser(Stream& stream); ~MD5MeshParser(); Ternary Check(); @@ -74,7 +74,7 @@ namespace Nz std::vector m_joints; std::vector m_meshes; - InputStream& m_stream; + Stream& m_stream; String m_currentLine; bool m_keepLastLine; unsigned int m_lineCount; diff --git a/include/Nazara/Utility/Formats/MTLParser.hpp b/include/Nazara/Utility/Formats/MTLParser.hpp index f9b6ede5a..d58148ec7 100644 --- a/include/Nazara/Utility/Formats/MTLParser.hpp +++ b/include/Nazara/Utility/Formats/MTLParser.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include #include @@ -39,7 +39,7 @@ namespace Nz unsigned int illumModel = 0; }; - MTLParser(InputStream& stream$); + MTLParser(Stream& stream$); ~MTLParser(); const Material* GetMaterial(const String& materialName) const; @@ -54,7 +54,7 @@ namespace Nz void UnrecognizedLine(bool error = false); std::unordered_map m_materials; - InputStream& m_stream; + Stream& m_stream; String m_currentLine; bool m_keepLastLine; unsigned int m_lineCount; diff --git a/include/Nazara/Utility/Formats/OBJParser.hpp b/include/Nazara/Utility/Formats/OBJParser.hpp index 7546db7bd..3decd248f 100644 --- a/include/Nazara/Utility/Formats/OBJParser.hpp +++ b/include/Nazara/Utility/Formats/OBJParser.hpp @@ -8,7 +8,7 @@ #define NAZARA_FORMATS_OBJPARSER_HPP #include -#include +#include #include #include #include @@ -39,7 +39,7 @@ namespace Nz unsigned int material; }; - OBJParser(InputStream& stream$); + OBJParser(Stream& stream$); ~OBJParser(); const String* GetMaterials() const; @@ -67,7 +67,7 @@ namespace Nz std::vector m_normals; std::vector m_positions; std::vector m_texCoords; - InputStream& m_stream; + Stream& m_stream; String m_currentLine; String m_mtlLib; bool m_keepLastLine; diff --git a/include/Nazara/Utility/Image.hpp b/include/Nazara/Utility/Image.hpp index 794ef9ff4..ed9772a88 100644 --- a/include/Nazara/Utility/Image.hpp +++ b/include/Nazara/Utility/Image.hpp @@ -9,7 +9,6 @@ #include #include -#include #include #include #include @@ -17,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -93,19 +93,19 @@ namespace Nz // Load bool LoadFromFile(const String& filePath, const ImageParams& params = ImageParams()); bool LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams()); - bool LoadFromStream(InputStream& stream, const ImageParams& params = ImageParams()); + bool LoadFromStream(Stream& stream, const ImageParams& params = ImageParams()); // LoadArray bool LoadArrayFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); bool LoadArrayFromImage(const Image& image, const Vector2ui& atlasSize = Vector2ui(2, 2)); bool LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromStream(InputStream& stream, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); + bool LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); // LoadCubemap bool LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); bool LoadCubemapFromImage(const Image& image, const CubemapParams& params = CubemapParams()); bool LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); - bool LoadCubemapFromStream(InputStream& stream, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); + bool LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); void SetLevelCount(UInt8 levelCount); bool SetPixelColor(const Color& color, unsigned int x, unsigned int y = 0, unsigned int z = 0); diff --git a/include/Nazara/Utility/Mesh.hpp b/include/Nazara/Utility/Mesh.hpp index 691c8f3ed..17857704a 100644 --- a/include/Nazara/Utility/Mesh.hpp +++ b/include/Nazara/Utility/Mesh.hpp @@ -8,7 +8,6 @@ #define NAZARA_MESH_HPP #include -#include #include #include #include @@ -16,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -115,7 +115,7 @@ namespace Nz bool LoadFromFile(const String& filePath, const MeshParams& params = MeshParams()); bool LoadFromMemory(const void* data, std::size_t size, const MeshParams& params = MeshParams()); - bool LoadFromStream(InputStream& stream, const MeshParams& params = MeshParams()); + bool LoadFromStream(Stream& stream, const MeshParams& params = MeshParams()); void Recenter(); diff --git a/src/Nazara/Audio/Formats/sndfileLoader.cpp b/src/Nazara/Audio/Formats/sndfileLoader.cpp index fb8725a37..4cf99fee7 100644 --- a/src/Nazara/Audio/Formats/sndfileLoader.cpp +++ b/src/Nazara/Audio/Formats/sndfileLoader.cpp @@ -13,8 +13,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -27,19 +27,19 @@ namespace Nz { sf_count_t GetSize(void* user_data) { - InputStream* stream = static_cast(user_data); + Stream* stream = static_cast(user_data); return stream->GetSize(); } sf_count_t Read(void* ptr, sf_count_t count, void* user_data) { - InputStream* stream = static_cast(user_data); + Stream* stream = static_cast(user_data); return static_cast(stream->Read(ptr, static_cast(count))); } sf_count_t Seek(sf_count_t offset, int whence, void* user_data) { - InputStream* stream = static_cast(user_data); + Stream* stream = static_cast(user_data); switch (whence) { case SEEK_CUR: @@ -63,7 +63,7 @@ namespace Nz sf_count_t Tell(void* user_data) { - InputStream* stream = static_cast(user_data); + Stream* stream = static_cast(user_data); return stream->GetCursorPos(); } @@ -128,7 +128,7 @@ namespace Nz return Open(*m_ownedStream, forceMono); } - bool Open(InputStream& stream, bool forceMono) + bool Open(Stream& stream, bool forceMono) { SF_INFO infos; infos.format = 0; // Format inconnu @@ -203,7 +203,7 @@ namespace Nz private: std::vector m_mixBuffer; - std::unique_ptr m_ownedStream; + std::unique_ptr m_ownedStream; AudioFormat m_format; SNDFILE* m_handle; bool m_mixToMono; @@ -222,7 +222,7 @@ namespace Nz return supportedExtensions.find(extension) != supportedExtensions.end(); } - Ternary CheckMusic(InputStream& stream, const MusicParams& parameters) + Ternary CheckMusic(Stream& stream, const MusicParams& parameters) { NazaraUnused(parameters); @@ -282,7 +282,7 @@ namespace Nz return true; } - bool LoadMusicStream(Music* music, InputStream& stream, const MusicParams& parameters) + bool LoadMusicStream(Music* music, Stream& stream, const MusicParams& parameters) { std::unique_ptr musicStream(new sndfileStream); if (!musicStream->Open(stream, parameters.forceMono)) @@ -303,7 +303,7 @@ namespace Nz return true; } - Ternary CheckSoundBuffer(InputStream& stream, const SoundBufferParams& parameters) + Ternary CheckSoundBuffer(Stream& stream, const SoundBufferParams& parameters) { NazaraUnused(parameters); @@ -320,7 +320,7 @@ namespace Nz return Ternary_False; } - bool LoadSoundBuffer(SoundBuffer* soundBuffer, InputStream& stream, const SoundBufferParams& parameters) + bool LoadSoundBuffer(SoundBuffer* soundBuffer, Stream& stream, const SoundBufferParams& parameters) { SF_INFO info; info.format = 0; diff --git a/src/Nazara/Audio/Music.cpp b/src/Nazara/Audio/Music.cpp index a1ab56b61..8ff8e2a7f 100644 --- a/src/Nazara/Audio/Music.cpp +++ b/src/Nazara/Audio/Music.cpp @@ -189,7 +189,7 @@ namespace Nz return MusicLoader::LoadFromMemory(this, data, size, params); } - bool Music::OpenFromStream(InputStream& stream, const MusicParams& params) + bool Music::OpenFromStream(Stream& stream, const MusicParams& params) { return MusicLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Audio/Sound.cpp b/src/Nazara/Audio/Sound.cpp index bcba9a423..31ef3af27 100644 --- a/src/Nazara/Audio/Sound.cpp +++ b/src/Nazara/Audio/Sound.cpp @@ -110,7 +110,7 @@ namespace Nz return true; } - bool Sound::LoadFromStream(InputStream& stream, const SoundBufferParams& params) + bool Sound::LoadFromStream(Stream& stream, const SoundBufferParams& params) { SoundBufferRef buffer = SoundBuffer::New(); if (!buffer->LoadFromStream(stream, params)) diff --git a/src/Nazara/Audio/SoundBuffer.cpp b/src/Nazara/Audio/SoundBuffer.cpp index 9b3f9f4ea..10edc74f8 100644 --- a/src/Nazara/Audio/SoundBuffer.cpp +++ b/src/Nazara/Audio/SoundBuffer.cpp @@ -206,7 +206,7 @@ namespace Nz return SoundBufferLoader::LoadFromMemory(this, data, size, params); } - bool SoundBuffer::LoadFromStream(InputStream& stream, const SoundBufferParams& params) + bool SoundBuffer::LoadFromStream(Stream& stream, const SoundBufferParams& params) { return SoundBufferLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Core/File.cpp b/src/Nazara/Core/File.cpp index c84fff7b9..c6ad0e257 100644 --- a/src/Nazara/Core/File.cpp +++ b/src/Nazara/Core/File.cpp @@ -50,8 +50,6 @@ namespace Nz File::File(File&& file) noexcept : Stream(std::move(file)), - InputStream(std::move(file)), - OutputStream(std::move(file)), m_filePath(std::move(file.m_filePath)), m_impl(file.m_impl) { @@ -119,16 +117,6 @@ namespace Nz return Exists(m_filePath); } - void File::Flush() - { - NazaraLock(m_mutex) - - NazaraAssert(IsOpen(), "File is not open"); - NazaraAssert(IsWritable(), "File not opened with write access"); - - m_impl->Flush(); - } - time_t File::GetCreationTime() const { NazaraLock(m_mutex) @@ -194,29 +182,6 @@ namespace Nz return m_impl != nullptr; } - std::size_t File::Read(void* buffer, std::size_t size) - { - NazaraLock(m_mutex) - - NazaraAssert(IsOpen(), "File is not opened"); - NazaraAssert(IsReadable(), "File not opened with read access"); - - if (size == 0) - return 0; - - if (buffer) - return m_impl->Read(buffer, size); - else - { - // Si nous ne devons rien lire, nous avançons simplement - UInt64 currentPos = m_impl->GetCursorPos(); - - m_impl->SetCursorPos(CursorPosition_AtCurrent, size); - - return static_cast(m_impl->GetCursorPos() - currentPos); - } - } - bool File::Rename(const String& newFilePath) { NazaraLock(m_mutex) @@ -321,21 +286,6 @@ namespace Nz return true; } - std::size_t File::Write(const void* buffer, std::size_t size) - { - NazaraLock(m_mutex) - - NazaraAssert(IsOpen(), "File is not opened"); - NazaraAssert(IsWritable(), "File not opened with write access"); - - if (size == 0) - return 0; - - NazaraAssert(buffer, "Invalid buffer"); - - return m_impl->Write(buffer, size); - } - File& File::operator=(const String& filePath) { SetFile(filePath); @@ -549,6 +499,52 @@ namespace Nz return FileImpl::Rename(NormalizePath(sourcePath), NormalizePath(targetPath)); } + void File::FlushStream() + { + NazaraLock(m_mutex) + + NazaraAssert(IsOpen(), "File is not open"); + + m_impl->Flush(); + } + + std::size_t File::ReadBlock(void* buffer, std::size_t size) + { + NazaraLock(m_mutex) + + NazaraAssert(IsOpen(), "File is not opened"); + + if (size == 0) + return 0; + + if (buffer) + return m_impl->Read(buffer, size); + else + { + // Si nous ne devons rien lire, nous avançons simplement + UInt64 currentPos = m_impl->GetCursorPos(); + + m_impl->SetCursorPos(CursorPosition_AtCurrent, size); + + return static_cast(m_impl->GetCursorPos() - currentPos); + } + } + + std::size_t File::WriteBlock(const void* buffer, std::size_t size) + { + NazaraLock(m_mutex) + + NazaraAssert(IsOpen(), "File is not opened"); + + if (size == 0) + return 0; + + NazaraAssert(buffer, "Invalid buffer"); + + return m_impl->Write(buffer, size); + } + + NAZARA_CORE_API bool HashAppend(AbstractHash* hash, const File& originalFile) { File file(originalFile.GetPath()); diff --git a/src/Nazara/Core/InputStream.cpp b/src/Nazara/Core/InputStream.cpp deleted file mode 100644 index aa62e8114..000000000 --- a/src/Nazara/Core/InputStream.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// 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 -#include -#include -#include -#include - -namespace Nz -{ - InputStream::~InputStream() = default; - - String InputStream::ReadLine(unsigned int lineSize) - { - String line; - if (lineSize == 0) // Taille maximale indéterminée - { - const unsigned int bufferSize = 64; - - char buffer[bufferSize+1]; - buffer[bufferSize] = '\0'; - - unsigned int readSize; - do - { - readSize = Read(buffer, bufferSize); - - const char* ptr = std::strchr(buffer, '\n'); - if (ptr) - { - unsigned int pos = ptr-buffer; - - if (m_streamOptions & StreamOption_Text && pos > 0 && buffer[pos-1] == '\r') - line.Append(buffer, pos-1); - else - line.Append(buffer, pos); - - if (!SetCursorPos(GetCursorPos() - readSize + pos + 1)) - NazaraWarning("Failed to reset cursos pos"); - - break; - } - else - line.Append(buffer, readSize); - } - while (readSize == bufferSize); - } - else - { - line.Set(lineSize, '\0'); - unsigned int readSize = Read(&line[0], lineSize); - unsigned int pos = line.Find('\n'); - if (pos <= readSize) // Faux uniquement si le caractère n'est pas présent (npos étant le plus grand entier) - { - if (m_streamOptions & StreamOption_Text && pos > 0 && line[pos-1] == '\r') - line.Resize(pos); - else - line.Resize(pos+1); - - if (!SetCursorPos(GetCursorPos() - readSize + pos + 1)) - NazaraWarning("Failed to reset cursos pos"); - } - else - line.Resize(readSize); - } - - return line; - } -} diff --git a/src/Nazara/Core/MemoryStream.cpp b/src/Nazara/Core/MemoryStream.cpp index 0bd11573b..f92d6a3c0 100644 --- a/src/Nazara/Core/MemoryStream.cpp +++ b/src/Nazara/Core/MemoryStream.cpp @@ -33,11 +33,6 @@ namespace Nz return m_pos >= m_buffer.size(); } - void MemoryStream::Flush() - { - // Nothing to flush - } - const ByteArray& MemoryStream::GetBuffer() const { return m_buffer; @@ -58,7 +53,19 @@ namespace Nz return m_buffer.size(); } - std::size_t MemoryStream::Read(void* buffer, std::size_t size) + bool MemoryStream::SetCursorPos(UInt64 offset) + { + m_pos = std::min(offset, m_buffer.size()); + + return true; + } + + void MemoryStream::FlushStream() + { + // Nothing to flush + } + + std::size_t MemoryStream::ReadBlock(void* buffer, std::size_t size) { std::size_t readSize = std::min(size, static_cast(m_buffer.size() - m_pos)); @@ -69,14 +76,7 @@ namespace Nz return readSize; } - bool MemoryStream::SetCursorPos(UInt64 offset) - { - m_pos = std::min(offset, m_buffer.size()); - - return true; - } - - std::size_t MemoryStream::Write(const void* buffer, std::size_t size) + std::size_t MemoryStream::WriteBlock(const void* buffer, std::size_t size) { std::size_t endPos = static_cast(m_pos + size); if (endPos > m_buffer.size()) diff --git a/src/Nazara/Core/MemoryView.cpp b/src/Nazara/Core/MemoryView.cpp index b5a47c776..f86200b90 100644 --- a/src/Nazara/Core/MemoryView.cpp +++ b/src/Nazara/Core/MemoryView.cpp @@ -32,7 +32,19 @@ namespace Nz return m_size; } - std::size_t MemoryView::Read(void* buffer, std::size_t size) + bool MemoryView::SetCursorPos(UInt64 offset) + { + m_pos = std::min(offset, m_size); + + return true; + } + + void MemoryView::FlushStream() + { + NazaraInternalError("FlushStream has been called on a MemoryView"); + } + + std::size_t MemoryView::ReadBlock(void* buffer, std::size_t size) { std::size_t readSize = std::min(size, static_cast(m_size - m_pos)); @@ -43,10 +55,9 @@ namespace Nz return readSize; } - bool MemoryView::SetCursorPos(UInt64 offset) + std::size_t MemoryView::WriteBlock(const void* buffer, std::size_t size) { - m_pos = std::min(offset, m_size); - - return true; + NazaraInternalError("WriteBlock has been called on a MemoryView"); + return 0; } } diff --git a/src/Nazara/Core/OutputStream.cpp b/src/Nazara/Core/OutputStream.cpp deleted file mode 100644 index b9bc8a420..000000000 --- a/src/Nazara/Core/OutputStream.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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 -#include -#include -#include -#include -#include - -namespace Nz -{ - OutputStream::~OutputStream() = default; - - bool OutputStream::Write(const ByteArray& byteArray) - { - ByteArray::size_type size = byteArray.GetSize(); - return Write(byteArray.GetConstBuffer(), size) == size; - } - - bool OutputStream::Write(const String& string) - { - String temp(string); - - if (m_streamOptions & StreamOption_Text) - { - #if defined(NAZARA_PLATFORM_WINDOWS) - temp.Replace("\n", "\r\n"); - #elif defined(NAZARA_PLATFORM_LINUX) - // Nothing to do - #elif defined(NAZARA_PLATFORM_MACOS) - temp.Replace('\n', '\r'); - #endif - } - - std::size_t size = temp.GetSize(); - return Write(temp.GetConstBuffer(), size) == size; - } -} diff --git a/src/Nazara/Core/Stream.cpp b/src/Nazara/Core/Stream.cpp index 8a6951887..484057341 100644 --- a/src/Nazara/Core/Stream.cpp +++ b/src/Nazara/Core/Stream.cpp @@ -3,6 +3,8 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include +#include #include #include @@ -19,4 +21,86 @@ namespace Nz { return String(); } + + String Stream::ReadLine(unsigned int lineSize) + { + String line; + if (lineSize == 0) // Taille maximale indéterminée + { + const unsigned int bufferSize = 64; + + char buffer[bufferSize + 1]; + buffer[bufferSize] = '\0'; + + unsigned int readSize; + do + { + readSize = Read(buffer, bufferSize); + + const char* ptr = std::strchr(buffer, '\n'); + if (ptr) + { + unsigned int pos = ptr - buffer; + + if (m_streamOptions & StreamOption_Text && pos > 0 && buffer[pos - 1] == '\r') + line.Append(buffer, pos - 1); + else + line.Append(buffer, pos); + + if (!SetCursorPos(GetCursorPos() - readSize + pos + 1)) + NazaraWarning("Failed to reset cursos pos"); + + break; + } + else + line.Append(buffer, readSize); + } + while (readSize == bufferSize); + } + else + { + line.Set(lineSize, '\0'); + unsigned int readSize = Read(&line[0], lineSize); + unsigned int pos = line.Find('\n'); + if (pos <= readSize) // Faux uniquement si le caractère n'est pas présent (npos étant le plus grand entier) + { + if (m_streamOptions & StreamOption_Text && pos > 0 && line[pos - 1] == '\r') + line.Resize(pos); + else + line.Resize(pos + 1); + + if (!SetCursorPos(GetCursorPos() - readSize + pos + 1)) + NazaraWarning("Failed to reset cursos pos"); + } + else + line.Resize(readSize); + } + + return line; + } + + bool Stream::Write(const ByteArray& byteArray) + { + ByteArray::size_type size = byteArray.GetSize(); + return Write(byteArray.GetConstBuffer(), size) == size; + } + + bool Stream::Write(const String& string) + { + String temp(string); + + if (m_streamOptions & StreamOption_Text) + { + #if defined(NAZARA_PLATFORM_WINDOWS) + temp.Replace("\n", "\r\n"); + #elif defined(NAZARA_PLATFORM_LINUX) + // Nothing to do + #elif defined(NAZARA_PLATFORM_MACOS) + temp.Replace('\n', '\r'); + #endif + } + + std::size_t size = temp.GetSize(); + return Write(temp.GetConstBuffer(), size) == size; + } } diff --git a/src/Nazara/Graphics/Formats/MeshLoader.cpp b/src/Nazara/Graphics/Formats/MeshLoader.cpp index c4056577b..bce371e51 100644 --- a/src/Nazara/Graphics/Formats/MeshLoader.cpp +++ b/src/Nazara/Graphics/Formats/MeshLoader.cpp @@ -14,7 +14,7 @@ namespace Nz { namespace { - Ternary CheckStatic(InputStream& stream, const ModelParameters& parameters) + Ternary CheckStatic(Stream& stream, const ModelParameters& parameters) { NazaraUnused(stream); NazaraUnused(parameters); @@ -22,7 +22,7 @@ namespace Nz return Ternary_Unknown; } - bool LoadStatic(Model* model, InputStream& stream, const ModelParameters& parameters) + bool LoadStatic(Model* model, Stream& stream, const ModelParameters& parameters) { NazaraUnused(parameters); @@ -63,7 +63,7 @@ namespace Nz return true; } - Ternary CheckAnimated(InputStream& stream, const SkeletalModelParameters& parameters) + Ternary CheckAnimated(Stream& stream, const SkeletalModelParameters& parameters) { NazaraUnused(stream); NazaraUnused(parameters); @@ -71,7 +71,7 @@ namespace Nz return Ternary_Unknown; } - bool LoadAnimated(SkeletalModel* model, InputStream& stream, const SkeletalModelParameters& parameters) + bool LoadAnimated(SkeletalModel* model, Stream& stream, const SkeletalModelParameters& parameters) { NazaraUnused(parameters); diff --git a/src/Nazara/Graphics/Formats/OBJLoader.cpp b/src/Nazara/Graphics/Formats/OBJLoader.cpp index 4462a2e1d..b295811d4 100644 --- a/src/Nazara/Graphics/Formats/OBJLoader.cpp +++ b/src/Nazara/Graphics/Formats/OBJLoader.cpp @@ -29,7 +29,7 @@ namespace Nz return (extension == "obj"); } - Ternary Check(InputStream& stream, const ModelParameters& parameters) + Ternary Check(Stream& stream, const ModelParameters& parameters) { NazaraUnused(stream); NazaraUnused(parameters); @@ -127,7 +127,7 @@ namespace Nz return true; } - bool Load(Model* model, InputStream& stream, const ModelParameters& parameters) + bool Load(Model* model, Stream& stream, const ModelParameters& parameters) { OBJParser parser(stream); if (!parser.Parse()) diff --git a/src/Nazara/Graphics/Formats/TextureLoader.cpp b/src/Nazara/Graphics/Formats/TextureLoader.cpp index 1bea108ff..2f8dc2910 100644 --- a/src/Nazara/Graphics/Formats/TextureLoader.cpp +++ b/src/Nazara/Graphics/Formats/TextureLoader.cpp @@ -12,7 +12,7 @@ namespace Nz { namespace { - Ternary Check(InputStream& stream, const MaterialParams& parameters) + Ternary Check(Stream& stream, const MaterialParams& parameters) { NazaraUnused(stream); NazaraUnused(parameters); @@ -20,7 +20,7 @@ namespace Nz return Ternary_Unknown; } - bool Load(Material* material, InputStream& stream, const MaterialParams& parameters) + bool Load(Material* material, Stream& stream, const MaterialParams& parameters) { NazaraUnused(parameters); diff --git a/src/Nazara/Graphics/Material.cpp b/src/Nazara/Graphics/Material.cpp index 9d34c9995..0781c6919 100644 --- a/src/Nazara/Graphics/Material.cpp +++ b/src/Nazara/Graphics/Material.cpp @@ -370,7 +370,7 @@ namespace Nz return MaterialLoader::LoadFromMemory(this, data, size, params); } - bool Material::LoadFromStream(InputStream& stream, const MaterialParams& params) + bool Material::LoadFromStream(Stream& stream, const MaterialParams& params) { return MaterialLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index fa7bfabe4..954f3ff01 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -175,7 +175,7 @@ namespace Nz return ModelLoader::LoadFromMemory(this, data, size, params); } - bool Model::LoadFromStream(InputStream& stream, const ModelParameters& params) + bool Model::LoadFromStream(Stream& stream, const ModelParameters& params) { return ModelLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Graphics/SkeletalModel.cpp b/src/Nazara/Graphics/SkeletalModel.cpp index 71ff53bb5..97889764d 100644 --- a/src/Nazara/Graphics/SkeletalModel.cpp +++ b/src/Nazara/Graphics/SkeletalModel.cpp @@ -149,7 +149,7 @@ namespace Nz return SkeletalModelLoader::LoadFromMemory(this, data, size, params); } - bool SkeletalModel::LoadFromStream(InputStream& stream, const SkeletalModelParameters& params) + bool SkeletalModel::LoadFromStream(Stream& stream, const SkeletalModelParameters& params) { return SkeletalModelLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Lua/LuaInstance.cpp b/src/Nazara/Lua/LuaInstance.cpp index d5b8e3e1d..e1ed81644 100644 --- a/src/Nazara/Lua/LuaInstance.cpp +++ b/src/Nazara/Lua/LuaInstance.cpp @@ -62,7 +62,7 @@ namespace Nz struct StreamData { - InputStream* stream; + Stream* stream; char buffer[NAZARA_CORE_FILE_BUFFERSIZE]; }; @@ -422,7 +422,7 @@ namespace Nz return ExecuteFromStream(stream); } - bool LuaInstance::ExecuteFromStream(InputStream& stream) + bool LuaInstance::ExecuteFromStream(Stream& stream) { StreamData data; data.stream = &stream; diff --git a/src/Nazara/Renderer/Texture.cpp b/src/Nazara/Renderer/Texture.cpp index f52cfd7ee..fea1e2d6b 100644 --- a/src/Nazara/Renderer/Texture.cpp +++ b/src/Nazara/Renderer/Texture.cpp @@ -599,7 +599,7 @@ namespace Nz return LoadFromImage(image, generateMipmaps); } - bool Texture::LoadFromStream(InputStream& stream, const ImageParams& params, bool generateMipmaps) + bool Texture::LoadFromStream(Stream& stream, const ImageParams& params, bool generateMipmaps) { Image image; if (!image.LoadFromStream(stream, params)) @@ -647,7 +647,7 @@ namespace Nz return LoadFromImage(cubemap, generateMipmaps); } - bool Texture::LoadArrayFromStream(InputStream& stream, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) + bool Texture::LoadArrayFromStream(Stream& stream, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) { Image cubemap; if (!cubemap.LoadArrayFromStream(stream, imageParams, atlasSize)) @@ -695,7 +695,7 @@ namespace Nz return LoadFromImage(cubemap, generateMipmaps); } - bool Texture::LoadCubemapFromStream(InputStream& stream, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) + bool Texture::LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) { Image cubemap; if (!cubemap.LoadCubemapFromStream(stream, imageParams, cubemapParams)) @@ -785,7 +785,7 @@ namespace Nz return Update(image, Rectui(0, 0, faceSize, faceSize), face); } - bool Texture::LoadFaceFromStream(CubemapFace face, InputStream& stream, const ImageParams& params) + bool Texture::LoadFaceFromStream(CubemapFace face, Stream& stream, const ImageParams& params) { #if NAZARA_RENDERER_SAFE if (!m_impl) diff --git a/src/Nazara/Utility/Animation.cpp b/src/Nazara/Utility/Animation.cpp index 683b4f3a7..bbd57b1df 100644 --- a/src/Nazara/Utility/Animation.cpp +++ b/src/Nazara/Utility/Animation.cpp @@ -458,7 +458,7 @@ namespace Nz return AnimationLoader::LoadFromMemory(this, data, size, params); } - bool Animation::LoadFromStream(InputStream& stream, const AnimationParams& params) + bool Animation::LoadFromStream(Stream& stream, const AnimationParams& params) { return AnimationLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Utility/Font.cpp b/src/Nazara/Utility/Font.cpp index a2e7b2833..b7cefb362 100644 --- a/src/Nazara/Utility/Font.cpp +++ b/src/Nazara/Utility/Font.cpp @@ -290,7 +290,7 @@ namespace Nz return FontLoader::LoadFromMemory(this, data, size, params); } - bool Font::OpenFromStream(InputStream& stream, const FontParams& params) + bool Font::OpenFromStream(Stream& stream, const FontParams& params) { return FontLoader::LoadFromStream(this, stream, params); } diff --git a/src/Nazara/Utility/Formats/DDSLoader.cpp b/src/Nazara/Utility/Formats/DDSLoader.cpp index eb6bd2d6d..b38ed4470 100644 --- a/src/Nazara/Utility/Formats/DDSLoader.cpp +++ b/src/Nazara/Utility/Formats/DDSLoader.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include @@ -20,7 +20,7 @@ namespace Nz return (extension == "dds"); } - Ternary Check(InputStream& stream, const ImageParams& parameters) + Ternary Check(Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); @@ -38,7 +38,7 @@ namespace Nz return Ternary_False; } - bool Load(Image* image, InputStream& stream, const ImageParams& parameters) + bool Load(Image* image, Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); diff --git a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp index f859e327f..2f5c2ef8f 100644 --- a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp +++ b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp @@ -8,8 +8,8 @@ #include FT_BITMAP_H #include FT_OUTLINE_H #include -#include #include +#include #include #include #include @@ -31,7 +31,7 @@ namespace Nz unsigned long FT_StreamRead(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count) { // http://www.freetype.org/freetype2/docs/reference/ft2-system_interface.html#FT_Stream_IoFunc - InputStream& inputStream = *static_cast(stream->descriptor.pointer); + Stream& inputStream = *static_cast(stream->descriptor.pointer); // La valeur de count indique une opération de lecture ou de positionnement if (count > 0) @@ -298,7 +298,7 @@ namespace Nz SetStream(*m_ownedStream); } - void SetStream(InputStream& stream) + void SetStream(Stream& stream) { m_stream.base = nullptr; m_stream.close = FT_StreamClose; @@ -332,7 +332,7 @@ namespace Nz FT_Face m_face; FT_StreamRec m_stream; std::shared_ptr m_library; - std::unique_ptr m_ownedStream; + std::unique_ptr m_ownedStream; mutable unsigned int m_characterSize; }; @@ -346,7 +346,7 @@ namespace Nz return supportedExtensions.find(extension) != supportedExtensions.end(); } - Ternary Check(InputStream& stream, const FontParams& parameters) + Ternary Check(Stream& stream, const FontParams& parameters) { NazaraUnused(parameters); @@ -408,7 +408,7 @@ namespace Nz return false; } - bool LoadStream(Font* font, InputStream& stream, const FontParams& parameters) + bool LoadStream(Font* font, Stream& stream, const FontParams& parameters) { NazaraUnused(parameters); diff --git a/src/Nazara/Utility/Formats/MD2Loader.cpp b/src/Nazara/Utility/Formats/MD2Loader.cpp index 77fca01d1..ea685cc6f 100644 --- a/src/Nazara/Utility/Formats/MD2Loader.cpp +++ b/src/Nazara/Utility/Formats/MD2Loader.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include @@ -26,7 +26,7 @@ namespace Nz return (extension == "md2"); } - Ternary Check(InputStream& stream, const MeshParams& parameters) + Ternary Check(Stream& stream, const MeshParams& parameters) { NazaraUnused(parameters); @@ -45,7 +45,7 @@ namespace Nz return Ternary_False; } - bool Load(Mesh* mesh, InputStream& stream, const MeshParams& parameters) + bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) { MD2_Header header; if (stream.Read(&header, sizeof(MD2_Header)) != sizeof(MD2_Header)) diff --git a/src/Nazara/Utility/Formats/MD5AnimLoader.cpp b/src/Nazara/Utility/Formats/MD5AnimLoader.cpp index 513be6636..1950037c1 100644 --- a/src/Nazara/Utility/Formats/MD5AnimLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5AnimLoader.cpp @@ -15,7 +15,7 @@ namespace Nz return (extension == "md5anim"); } - Ternary Check(InputStream& stream, const AnimationParams& parameters) + Ternary Check(Stream& stream, const AnimationParams& parameters) { NazaraUnused(parameters); @@ -23,7 +23,7 @@ namespace Nz return parser.Check(); } - bool Load(Animation* animation, InputStream& stream, const AnimationParams& parameters) + bool Load(Animation* animation, Stream& stream, const AnimationParams& parameters) { ///TODO: Utiliser les paramètres MD5AnimParser parser(stream); diff --git a/src/Nazara/Utility/Formats/MD5AnimParser.cpp b/src/Nazara/Utility/Formats/MD5AnimParser.cpp index b53a8bd9b..321ee8692 100644 --- a/src/Nazara/Utility/Formats/MD5AnimParser.cpp +++ b/src/Nazara/Utility/Formats/MD5AnimParser.cpp @@ -15,22 +15,22 @@ namespace Nz { - MD5AnimParser::MD5AnimParser(InputStream& stream) : + MD5AnimParser::MD5AnimParser(Stream& stream) : m_stream(stream), m_keepLastLine(false), m_frameIndex(0), m_frameRate(0), m_lineCount(0), - m_streamFlags(stream.GetStreamOptions()) + m_streamFlags(stream.GetStreamOptions()) //< Saves stream flags { - if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags | StreamOption_Text); + m_stream.EnableTextMode(true); } MD5AnimParser::~MD5AnimParser() { + // Reset stream flags if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags); + m_stream.EnableTextMode(false); } Ternary MD5AnimParser::Check() diff --git a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp index 262892aa8..9bf16f055 100644 --- a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp @@ -20,7 +20,7 @@ namespace Nz return (extension == "md5mesh"); } - Ternary Check(InputStream& stream, const MeshParams& parameters) + Ternary Check(Stream& stream, const MeshParams& parameters) { NazaraUnused(parameters); @@ -28,7 +28,7 @@ namespace Nz return parser.Check(); } - bool Load(Mesh* mesh, InputStream& stream, const MeshParams& parameters) + bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) { MD5MeshParser parser(stream); if (!parser.Parse()) diff --git a/src/Nazara/Utility/Formats/MD5MeshParser.cpp b/src/Nazara/Utility/Formats/MD5MeshParser.cpp index 71d6779a4..d8dfcb304 100644 --- a/src/Nazara/Utility/Formats/MD5MeshParser.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshParser.cpp @@ -21,21 +21,21 @@ namespace Nz { - MD5MeshParser::MD5MeshParser(InputStream& stream) : + MD5MeshParser::MD5MeshParser(Stream& stream) : m_stream(stream), m_keepLastLine(false), m_lineCount(0), m_meshIndex(0), - m_streamFlags(stream.GetStreamOptions()) + m_streamFlags(stream.GetStreamOptions()) //< Saves stream flags { - if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags | StreamOption_Text); + m_stream.EnableTextMode(true); } MD5MeshParser::~MD5MeshParser() { + // Reset stream flags if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags); + m_stream.EnableTextMode(false); } Ternary MD5MeshParser::Check() diff --git a/src/Nazara/Utility/Formats/MTLParser.cpp b/src/Nazara/Utility/Formats/MTLParser.cpp index d0c7f05b9..2398ccb3f 100644 --- a/src/Nazara/Utility/Formats/MTLParser.cpp +++ b/src/Nazara/Utility/Formats/MTLParser.cpp @@ -12,18 +12,18 @@ namespace Nz { - MTLParser::MTLParser(InputStream& stream) : + MTLParser::MTLParser(Stream& stream) : m_stream(stream), - m_streamFlags(stream.GetStreamOptions()) + m_streamFlags(stream.GetStreamOptions()) //< Saves stream flags { - if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags | StreamOption_Text); + m_stream.EnableTextMode(true); } MTLParser::~MTLParser() { + // Reset stream flags if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags); + m_stream.EnableTextMode(false); } const MTLParser::Material* MTLParser::GetMaterial(const String& materialName) const diff --git a/src/Nazara/Utility/Formats/OBJParser.cpp b/src/Nazara/Utility/Formats/OBJParser.cpp index a582b2326..64132f586 100644 --- a/src/Nazara/Utility/Formats/OBJParser.cpp +++ b/src/Nazara/Utility/Formats/OBJParser.cpp @@ -13,18 +13,18 @@ namespace Nz { - OBJParser::OBJParser(InputStream& stream) : + OBJParser::OBJParser(Stream& stream) : m_stream(stream), - m_streamFlags(stream.GetStreamOptions()) + m_streamFlags(stream.GetStreamOptions()) //< Saves stream flags { - if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags | StreamOption_Text); + m_stream.EnableTextMode(true); } OBJParser::~OBJParser() { + // Reset stream flags if ((m_streamFlags & StreamOption_Text) == 0) - m_stream.SetStreamOptions(m_streamFlags); + m_stream.EnableTextMode(false); } const String* OBJParser::GetMaterials() const diff --git a/src/Nazara/Utility/Formats/PCXLoader.cpp b/src/Nazara/Utility/Formats/PCXLoader.cpp index 98862c517..c337409bf 100644 --- a/src/Nazara/Utility/Formats/PCXLoader.cpp +++ b/src/Nazara/Utility/Formats/PCXLoader.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include @@ -45,7 +45,7 @@ namespace Nz return (extension == "pcx"); } - Ternary Check(InputStream& stream, const ImageParams& parameters) + Ternary Check(Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); @@ -59,7 +59,7 @@ namespace Nz return Ternary_False; } - bool Load(Image* image, InputStream& stream, const ImageParams& parameters) + bool Load(Image* image, Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); diff --git a/src/Nazara/Utility/Formats/STBLoader.cpp b/src/Nazara/Utility/Formats/STBLoader.cpp index 86d23644e..75d185e82 100644 --- a/src/Nazara/Utility/Formats/STBLoader.cpp +++ b/src/Nazara/Utility/Formats/STBLoader.cpp @@ -7,8 +7,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -19,19 +19,19 @@ namespace Nz { int Read(void* userdata, char* data, int size) { - InputStream* stream = static_cast(userdata); + Stream* stream = static_cast(userdata); return static_cast(stream->Read(data, size)); } void Skip(void* userdata, int size) { - InputStream* stream = static_cast(userdata); + Stream* stream = static_cast(userdata); stream->SetCursorPos(static_cast(stream->GetCursorPos()) + static_cast(size)); } int Eof(void* userdata) { - InputStream* stream = static_cast(userdata); + Stream* stream = static_cast(userdata); return stream->GetCursorPos() >= stream->GetSize(); } @@ -43,7 +43,7 @@ namespace Nz return supportedExtensions.find(extension) != supportedExtensions.end(); } - Ternary Check(InputStream& stream, const ImageParams& parameters) + Ternary Check(Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); @@ -54,7 +54,7 @@ namespace Nz return Ternary_False; } - bool Load(Image* image, InputStream& stream, const ImageParams& parameters) + bool Load(Image* image, Stream& stream, const ImageParams& parameters) { // Je charge tout en RGBA8 et je converti ensuite via la méthode Convert // Ceci à cause d'un bug de STB lorsqu'il s'agit de charger certaines images (ex: JPG) en "default" diff --git a/src/Nazara/Utility/Image.cpp b/src/Nazara/Utility/Image.cpp index 8d88aae4c..8af7d7923 100644 --- a/src/Nazara/Utility/Image.cpp +++ b/src/Nazara/Utility/Image.cpp @@ -831,7 +831,7 @@ namespace Nz return ImageLoader::LoadFromMemory(this, data, size, params); } - bool Image::LoadFromStream(InputStream& stream, const ImageParams& params) + bool Image::LoadFromStream(Stream& stream, const ImageParams& params) { return ImageLoader::LoadFromStream(this, stream, params); } @@ -923,7 +923,7 @@ namespace Nz return LoadArrayFromImage(image, atlasSize); } - bool Image::LoadArrayFromStream(InputStream& stream, const ImageParams& imageParams, const Vector2ui& atlasSize) + bool Image::LoadArrayFromStream(Stream& stream, const ImageParams& imageParams, const Vector2ui& atlasSize) { Image image; if (!image.LoadFromStream(stream, imageParams)) @@ -1054,7 +1054,7 @@ namespace Nz return LoadCubemapFromImage(image, cubemapParams); } - bool Image::LoadCubemapFromStream(InputStream& stream, const ImageParams& imageParams, const CubemapParams& cubemapParams) + bool Image::LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams, const CubemapParams& cubemapParams) { Image image; if (!image.LoadFromStream(stream, imageParams)) diff --git a/src/Nazara/Utility/Mesh.cpp b/src/Nazara/Utility/Mesh.cpp index 3492916b1..82c903cae 100644 --- a/src/Nazara/Utility/Mesh.cpp +++ b/src/Nazara/Utility/Mesh.cpp @@ -795,7 +795,7 @@ namespace Nz return MeshLoader::LoadFromMemory(this, data, size, params); } - bool Mesh::LoadFromStream(InputStream& stream, const MeshParams& params) + bool Mesh::LoadFromStream(Stream& stream, const MeshParams& params) { return MeshLoader::LoadFromStream(this, stream, params); }