Core: Merge InputStream and OutputStream to Stream
Remove serialization support from Stream Former-commit-id: 7a761e4fcd07cab561f13e4709c4492ed18da88a
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Audio/Config.hpp>
|
||||
#include <Nazara/Audio/Enums.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/ObjectRef.hpp>
|
||||
#include <Nazara/Core/ObjectLibrary.hpp>
|
||||
#include <Nazara/Core/RefCounted.hpp>
|
||||
@@ -18,6 +17,7 @@
|
||||
#include <Nazara/Core/ResourceLoader.hpp>
|
||||
#include <Nazara/Core/ResourceManager.hpp>
|
||||
#include <Nazara/Core/Signal.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
|
||||
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<typename... Args> static SoundBufferRef New(Args&&... args);
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Audio/Config.hpp>
|
||||
#include <Nazara/Audio/Enums.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Math/Vector3.hpp>
|
||||
|
||||
///TODO: Faire hériter SoundEmitter de Node
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include <Nazara/Core/GuillotineBinPack.hpp>
|
||||
#include <Nazara/Core/HardwareInfo.hpp>
|
||||
#include <Nazara/Core/Initializer.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/LockGuard.hpp>
|
||||
#include <Nazara/Core/Log.hpp>
|
||||
#include <Nazara/Core/MemoryHelper.hpp>
|
||||
@@ -62,7 +61,6 @@
|
||||
#include <Nazara/Core/ObjectLibrary.hpp>
|
||||
#include <Nazara/Core/ObjectRef.hpp>
|
||||
#include <Nazara/Core/OffsetOf.hpp>
|
||||
#include <Nazara/Core/OutputStream.hpp>
|
||||
#include <Nazara/Core/ParameterList.hpp>
|
||||
#include <Nazara/Core/PluginManager.hpp>
|
||||
#include <Nazara/Core/Primitive.hpp>
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
|
||||
#include <Nazara/Core/AbstractHash.hpp>
|
||||
#include <Nazara/Core/Error.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/OutputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
#include <Nazara/Core/ByteArray.hpp>
|
||||
#include <Nazara/Core/Directory.hpp>
|
||||
#include <Nazara/Core/Endianness.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/OutputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
|
||||
#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;
|
||||
};
|
||||
|
||||
@@ -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 <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
|
||||
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<typename T>
|
||||
InputStream& operator>>(T& value);
|
||||
|
||||
inline InputStream& operator=(const InputStream& stream);
|
||||
inline InputStream& operator=(InputStream&& stream) noexcept;
|
||||
|
||||
protected:
|
||||
inline InputStream();
|
||||
|
||||
UnserializationContext m_unserializationContext;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/Core/InputStream.inl>
|
||||
|
||||
#endif // NAZARA_INPUTSTREAM_HPP
|
||||
@@ -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 <Nazara/Core/Error.hpp>
|
||||
#include <utility>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
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<typename T>
|
||||
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 <Nazara/Core/DebugOff.hpp>
|
||||
@@ -9,12 +9,11 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/ByteArray.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/OutputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
|
||||
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 <Nazara/Core/MemoryStream.hpp>
|
||||
#include <Nazara/Core/MemoryStream.inl>
|
||||
|
||||
#endif // NAZARA_MEMORYSTREAM_HPP
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
#define NAZARA_MEMORYVIEW_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
|
||||
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;
|
||||
|
||||
@@ -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 <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
|
||||
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<typename T>
|
||||
OutputStream& operator<<(const T& value);
|
||||
|
||||
inline OutputStream& operator=(const OutputStream& stream);
|
||||
inline OutputStream& operator=(OutputStream&& stream) noexcept;
|
||||
|
||||
protected:
|
||||
inline OutputStream();
|
||||
|
||||
SerializationContext m_serializationContext;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/Core/OutputStream.inl>
|
||||
|
||||
#endif // NAZARA_OUTPUTSTREAM_HPP
|
||||
@@ -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 <Nazara/Core/Error.hpp>
|
||||
#include <utility>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
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<typename T>
|
||||
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 <Nazara/Core/DebugOff.hpp>
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class InputStream;
|
||||
class Stream;
|
||||
|
||||
template<typename Type, typename Parameters>
|
||||
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);
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
#include <Nazara/Core/Config.hpp>
|
||||
#include <Nazara/Core/Error.hpp>
|
||||
#include <Nazara/Core/File.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/MemoryView.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
@@ -199,7 +199,7 @@ namespace Nz
|
||||
}
|
||||
|
||||
template<typename Type, typename Parameters>
|
||||
bool ResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, InputStream& stream, const Parameters& parameters)
|
||||
bool ResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, Stream& stream, const Parameters& parameters)
|
||||
{
|
||||
#if NAZARA_CORE_SAFE
|
||||
if (!parameters.IsValid())
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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 <Nazara/Core/Error.hpp>
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Clock.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
#include <Nazara/Lua/Config.hpp>
|
||||
#include <Nazara/Lua/Enums.hpp>
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<AbstractAtlas>& atlas);
|
||||
void SetGlyphBorder(unsigned int borderSize);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#define NAZARA_FORMATS_MD5ANIMPARSER_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Math/Box.hpp>
|
||||
#include <Nazara/Math/Quaternion.hpp>
|
||||
#include <Nazara/Math/Vector3.hpp>
|
||||
@@ -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<float> m_animatedComponents;
|
||||
std::vector<Frame> m_frames;
|
||||
std::vector<Joint> m_joints;
|
||||
InputStream& m_stream;
|
||||
Stream& m_stream;
|
||||
String m_currentLine;
|
||||
bool m_keepLastLine;
|
||||
unsigned int m_frameIndex;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#define NAZARA_FORMATS_MD5MESHPARSER_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
#include <Nazara/Math/Quaternion.hpp>
|
||||
#include <Nazara/Math/Vector3.hpp>
|
||||
@@ -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<Joint> m_joints;
|
||||
std::vector<Mesh> m_meshes;
|
||||
InputStream& m_stream;
|
||||
Stream& m_stream;
|
||||
String m_currentLine;
|
||||
bool m_keepLastLine;
|
||||
unsigned int m_lineCount;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Color.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
#include <Nazara/Utility/Config.hpp>
|
||||
#include <unordered_map>
|
||||
@@ -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<String, Material> m_materials;
|
||||
InputStream& m_stream;
|
||||
Stream& m_stream;
|
||||
String m_currentLine;
|
||||
bool m_keepLastLine;
|
||||
unsigned int m_lineCount;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#define NAZARA_FORMATS_OBJPARSER_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
#include <Nazara/Math/Vector3.hpp>
|
||||
#include <Nazara/Math/Vector4.hpp>
|
||||
@@ -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<Vector3f> m_normals;
|
||||
std::vector<Vector4f> m_positions;
|
||||
std::vector<Vector3f> m_texCoords;
|
||||
InputStream& m_stream;
|
||||
Stream& m_stream;
|
||||
String m_currentLine;
|
||||
String m_mtlLib;
|
||||
bool m_keepLastLine;
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Color.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/ObjectLibrary.hpp>
|
||||
#include <Nazara/Core/ObjectRef.hpp>
|
||||
#include <Nazara/Core/RefCounted.hpp>
|
||||
@@ -17,6 +16,7 @@
|
||||
#include <Nazara/Core/ResourceLoader.hpp>
|
||||
#include <Nazara/Core/ResourceManager.hpp>
|
||||
#include <Nazara/Core/Signal.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Utility/AbstractImage.hpp>
|
||||
#include <Nazara/Utility/CubemapParams.hpp>
|
||||
#include <atomic>
|
||||
@@ -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);
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#define NAZARA_MESH_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/InputStream.hpp>
|
||||
#include <Nazara/Core/ObjectLibrary.hpp>
|
||||
#include <Nazara/Core/ObjectRef.hpp>
|
||||
#include <Nazara/Core/Primitive.hpp>
|
||||
@@ -16,6 +15,7 @@
|
||||
#include <Nazara/Core/Resource.hpp>
|
||||
#include <Nazara/Core/ResourceLoader.hpp>
|
||||
#include <Nazara/Core/ResourceManager.hpp>
|
||||
#include <Nazara/Core/Stream.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
#include <Nazara/Math/Box.hpp>
|
||||
#include <Nazara/Utility/Skeleton.hpp>
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user