diff --git a/include/Nazara/Core/Enums.hpp b/include/Nazara/Core/Enums.hpp index d69e75e72..1df2b15e5 100644 --- a/include/Nazara/Core/Enums.hpp +++ b/include/Nazara/Core/Enums.hpp @@ -202,13 +202,13 @@ namespace Nz using StreamOptionFlags = Flags; - enum Ternary + enum class Ternary { - Ternary_False, - Ternary_True, - Ternary_Unknown, + False, + True, + Unknown, - Ternary_Max = Ternary_Unknown + Max = Unknown }; } diff --git a/include/Nazara/Core/ModuleBase.hpp b/include/Nazara/Core/ModuleBase.hpp index 8d484f209..d17e32116 100644 --- a/include/Nazara/Core/ModuleBase.hpp +++ b/include/Nazara/Core/ModuleBase.hpp @@ -18,6 +18,12 @@ namespace Nz friend class Core; public: + ModuleBase(const ModuleBase&) = delete; + ModuleBase(ModuleBase&&) = delete; + + ModuleBase& operator=(const ModuleBase&) = delete; + ModuleBase& operator=(ModuleBase&&) = delete; + static T* Instance(); protected: diff --git a/include/Nazara/Core/ObjectLibrary.hpp b/include/Nazara/Core/ObjectLibrary.hpp index 859dc82bb..0a69c14ed 100644 --- a/include/Nazara/Core/ObjectLibrary.hpp +++ b/include/Nazara/Core/ObjectLibrary.hpp @@ -7,8 +7,7 @@ #ifndef NAZARA_OBJECTLIBRARY_HPP #define NAZARA_OBJECTLIBRARY_HPP -#include -#include +#include #include #include @@ -20,23 +19,20 @@ namespace Nz friend Type; public: - ObjectLibrary() = delete; - ~ObjectLibrary() = delete; + ObjectLibrary() = default; + ~ObjectLibrary() = default; - static void Clear(); + void Clear(); - static ObjectRef Get(const std::string& name); - static bool Has(const std::string& name); + std::shared_ptr Get(const std::string& name); + bool Has(const std::string& name); - static void Register(const std::string& name, ObjectRef object); - static ObjectRef Query(const std::string& name); - static void Unregister(const std::string& name); + void Register(const std::string& name, std::shared_ptr object); + std::shared_ptr Query(const std::string& name); + void Unregister(const std::string& name); private: - static bool Initialize(); - static void Uninitialize(); - - using LibraryMap = std::unordered_map>; + std::unordered_map> m_library; }; } diff --git a/include/Nazara/Core/ObjectLibrary.inl b/include/Nazara/Core/ObjectLibrary.inl index a39b0b7a8..6d30b64cb 100644 --- a/include/Nazara/Core/ObjectLibrary.inl +++ b/include/Nazara/Core/ObjectLibrary.inl @@ -20,11 +20,11 @@ namespace Nz template void ObjectLibrary::Clear() { - Type::s_library.clear(); + m_library.clear(); } /*! - * \brief Gets the ObjectRef object by name + * \brief Gets the std::shared_ptr object by name * \return Optional reference * * \param name Name of the object @@ -32,9 +32,9 @@ namespace Nz * \remark Produces a NazaraError if object not found */ template - ObjectRef ObjectLibrary::Get(const std::string& name) + std::shared_ptr ObjectLibrary::Get(const std::string& name) { - ObjectRef ref = Query(name); + std::shared_ptr ref = Query(name); if (!ref) NazaraError("Object \"" + name + "\" is not present"); @@ -48,58 +48,46 @@ namespace Nz template bool ObjectLibrary::Has(const std::string& name) { - return Type::s_library.find(name) != Type::s_library.end(); + return m_library.find(name) != m_library.end(); } /*! - * \brief Registers the ObjectRef object with that name + * \brief Registers the std::shared_ptr object with that name * * \param name Name of the object * \param object Object to stock */ template - void ObjectLibrary::Register(const std::string& name, ObjectRef object) + void ObjectLibrary::Register(const std::string& name, std::shared_ptr object) { - Type::s_library.emplace(name, object); + m_library.emplace(name, object); } /*! - * \brief Gets the ObjectRef object by name + * \brief Gets the std::shared_ptr object by name * \return Optional reference * * \param name Name of the object */ template - ObjectRef ObjectLibrary::Query(const std::string& name) + std::shared_ptr ObjectLibrary::Query(const std::string& name) { - auto it = Type::s_library.find(name); - if (it != Type::s_library.end()) + auto it = m_library.find(name); + if (it != m_library.end()) return it->second; else return nullptr; } /*! - * \brief Unregisters the ObjectRef object with that name + * \brief Unregisters the std::shared_ptr object with that name * * \param name Name of the object */ template void ObjectLibrary::Unregister(const std::string& name) { - Type::s_library.erase(name); - } - - template - bool ObjectLibrary::Initialize() - { - return true; // Nothing to do - } - - template - void ObjectLibrary::Uninitialize() - { - Type::s_library.clear(); + m_library.erase(name); } } diff --git a/include/Nazara/Core/ResourceLoader.hpp b/include/Nazara/Core/ResourceLoader.hpp index 97f9a8d83..a1ab46e39 100644 --- a/include/Nazara/Core/ResourceLoader.hpp +++ b/include/Nazara/Core/ResourceLoader.hpp @@ -8,14 +8,13 @@ #define NAZARA_RESOURCELOADER_HPP #include -#include -#include #include #include #include -#include -#include +#include +#include #include +#include namespace Nz { @@ -29,27 +28,43 @@ namespace Nz friend Type; public: - using ExtensionGetter = bool (*)(const std::string& extension); - using FileLoader = ObjectRef (*)(const std::filesystem::path& filePath, const Parameters& parameters); - using MemoryLoader = ObjectRef (*)(const void* data, std::size_t size, const Parameters& parameters); - using StreamChecker = Ternary (*)(Stream& stream, const Parameters& parameters); - using StreamLoader = ObjectRef (*)(Stream& stream, const Parameters& parameters); + struct Entry; + using ExtensionSupport = std::function; + using FileLoader = std::function(const std::filesystem::path& filePath, const Parameters& parameters)>; + using MemoryLoader = std::function(const void* data, std::size_t size, const Parameters& parameters)>; + using StreamChecker = std::function; + using StreamLoader = std::function(Stream& stream, const Parameters& parameters)>; - ResourceLoader() = delete; - ~ResourceLoader() = delete; + ResourceLoader() = default; + ResourceLoader(const ResourceLoader&) = delete; + ResourceLoader(ResourceLoader&&) noexcept = default; + ~ResourceLoader() = default; - static bool IsExtensionSupported(const std::string& extension); + void Clear(); - static ObjectRef LoadFromFile(const std::filesystem::path& filePath, const Parameters& parameters = Parameters()); - static ObjectRef LoadFromMemory(const void* data, std::size_t size, const Parameters& parameters = Parameters()); - static ObjectRef LoadFromStream(Stream& stream, const Parameters& parameters = Parameters()); + bool IsExtensionSupported(const std::string_view& extension) const; - 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); + std::shared_ptr LoadFromFile(const std::filesystem::path& filePath, const Parameters& parameters = Parameters()) const; + std::shared_ptr LoadFromMemory(const void* data, std::size_t size, const Parameters& parameters = Parameters()) const; + std::shared_ptr LoadFromStream(Stream& stream, const Parameters& parameters = Parameters()) const; + + const Entry* RegisterLoader(Entry loader); + void UnregisterLoader(const Entry* loader); + + ResourceLoader& operator=(const ResourceLoader&) = delete; + ResourceLoader& operator=(ResourceLoader&&) noexcept = default; + + struct Entry + { + ExtensionSupport extensionSupport; + FileLoader fileLoader; + MemoryLoader memoryLoader; + StreamChecker streamChecker; + StreamLoader streamLoader; + }; private: - using Loader = std::tuple; - using LoaderList = std::list; + std::vector> m_loaders; }; } diff --git a/include/Nazara/Core/ResourceLoader.inl b/include/Nazara/Core/ResourceLoader.inl index baddafd4f..b822a350b 100644 --- a/include/Nazara/Core/ResourceLoader.inl +++ b/include/Nazara/Core/ResourceLoader.inl @@ -18,20 +18,29 @@ namespace Nz * \brief Core class that represents a loader of resources */ + /*! + * \brief Unregister every loader registered + */ + template + void ResourceLoader::Clear() + { + m_loaders.clear(); + } + /*! * \brief Checks whether the extension of the file is supported * \return true if supported * - * \param extension Extension of the file + * \param extension Extension of the file (ex: "png") */ template - bool ResourceLoader::IsExtensionSupported(const std::string& extension) + bool ResourceLoader::IsExtensionSupported(const std::string_view& extension) const { - for (Loader& loader : Type::s_loaders) + for (auto& loaderPtr : m_loaders) { - ExtensionGetter isExtensionSupported = std::get<0>(loader); + const Entry& loader = *loaderPtr; - if (isExtensionSupported && isExtensionSupported(extension)) + if (loader.extensionSupport && loader.extensionSupport(extension)) return true; } @@ -54,7 +63,7 @@ namespace Nz * \remark Produces a NazaraError if all loaders failed or no loader was found */ template - ObjectRef ResourceLoader::LoadFromFile(const std::filesystem::path& filePath, const Parameters& parameters) + std::shared_ptr ResourceLoader::LoadFromFile(const std::filesystem::path& filePath, const Parameters& parameters) const { NazaraAssert(parameters.IsValid(), "Invalid parameters"); @@ -71,17 +80,14 @@ namespace Nz File file(filePath.generic_u8string()); // Open only if needed bool found = false; - for (Loader& loader : Type::s_loaders) + for (auto& loaderPtr : m_loaders) { - ExtensionGetter isExtensionSupported = std::get<0>(loader); - if (!isExtensionSupported || !isExtensionSupported(ext)) + const Entry& loader = *loaderPtr; + + if (loader.extensionSupport && !loader.extensionSupport(ext)) continue; - StreamChecker checkFunc = std::get<1>(loader); - StreamLoader streamLoader = std::get<2>(loader); - FileLoader fileLoader = std::get<3>(loader); - - if (checkFunc && !file.IsOpen()) + if (loader.streamChecker && !file.IsOpen()) { if (!file.Open(OpenMode_ReadOnly)) { @@ -90,26 +96,26 @@ namespace Nz } } - Ternary recognized = Ternary_Unknown; - if (fileLoader) + Ternary recognized = Ternary::Unknown; + if (loader.fileLoader) { - if (checkFunc) + if (loader.streamChecker) { file.SetCursorPos(0); - recognized = checkFunc(file, parameters); - if (recognized == Ternary_False) + recognized = loader.streamChecker(file, parameters); + if (recognized == Ternary::False) continue; else found = true; } else { - recognized = Ternary_Unknown; + recognized = Ternary::Unknown; found = true; } - ObjectRef resource = fileLoader(filePath, parameters); + std::shared_ptr resource = loader.fileLoader(filePath, parameters); if (resource) { resource->SetFilePath(filePath); @@ -118,17 +124,19 @@ namespace Nz } else { + assert(loader.streamChecker); + file.SetCursorPos(0); - recognized = checkFunc(file, parameters); - if (recognized == Ternary_False) + recognized = loader.streamChecker(file, parameters); + if (recognized == Ternary::False) continue; - else if (recognized == Ternary_True) + else if (recognized == Ternary::True) found = true; file.SetCursorPos(0); - ObjectRef resource = streamLoader(file, parameters); + std::shared_ptr resource = loader.streamLoader(file, parameters); if (resource) { resource->SetFilePath(filePath); @@ -136,7 +144,7 @@ namespace Nz } } - if (recognized == Ternary_True) + if (recognized == Ternary::True) NazaraWarning("Loader failed"); } @@ -164,7 +172,7 @@ namespace Nz * \remark Produces a NazaraError if all loaders failed or no loader was found */ template - ObjectRef ResourceLoader::LoadFromMemory(const void* data, std::size_t size, const Parameters& parameters) + std::shared_ptr ResourceLoader::LoadFromMemory(const void* data, std::size_t size, const Parameters& parameters) const { NazaraAssert(data, "Invalid data pointer"); NazaraAssert(size, "No data to load"); @@ -173,32 +181,30 @@ namespace Nz MemoryView stream(data, size); bool found = false; - for (Loader& loader : Type::s_loaders) + for (auto& loaderPtr : m_loaders) { - StreamChecker checkFunc = std::get<1>(loader); - StreamLoader streamLoader = std::get<2>(loader); - MemoryLoader memoryLoader = std::get<4>(loader); + const Entry& loader = *loaderPtr; - Ternary recognized = Ternary_Unknown; - if (memoryLoader) + Ternary recognized = Ternary::Unknown; + if (loader.memoryLoader) { - if (checkFunc) + if (loader.streamChecker) { stream.SetCursorPos(0); - recognized = checkFunc(stream, parameters); - if (recognized == Ternary_False) + recognized = loader.streamChecker(stream, parameters); + if (recognized == Ternary::False) continue; else found = true; } else { - recognized = Ternary_Unknown; + recognized = Ternary::Unknown; found = true; } - ObjectRef resource = memoryLoader(data, size, parameters); + std::shared_ptr resource = loader.memoryLoader(data, size, parameters); if (resource) return resource; } @@ -206,20 +212,20 @@ namespace Nz { stream.SetCursorPos(0); - recognized = checkFunc(stream, parameters); - if (recognized == Ternary_False) + recognized = loader.streamChecker(stream, parameters); + if (recognized == Ternary::False) continue; - else if (recognized == Ternary_True) + else if (recognized == Ternary::True) found = true; stream.SetCursorPos(0); - ObjectRef resource = streamLoader(stream, parameters); + std::shared_ptr resource = loader.streamLoader(stream, parameters); if (resource) return resource; } - if (recognized == Ternary_True) + if (recognized == Ternary::True) NazaraWarning("Loader failed"); } @@ -246,36 +252,35 @@ namespace Nz * \remark Produces a NazaraError if all loaders failed or no loader was found */ template - ObjectRef ResourceLoader::LoadFromStream(Stream& stream, const Parameters& parameters) + std::shared_ptr ResourceLoader::LoadFromStream(Stream& stream, const Parameters& parameters) const { NazaraAssert(stream.GetCursorPos() < stream.GetSize(), "No data to load"); NazaraAssert(parameters.IsValid(), "Invalid parameters"); UInt64 streamPos = stream.GetCursorPos(); bool found = false; - for (Loader& loader : Type::s_loaders) + for (auto& loaderPtr : m_loaders) { - StreamChecker checkFunc = std::get<1>(loader); - StreamLoader streamLoader = std::get<2>(loader); + const Entry& loader = *loaderPtr; stream.SetCursorPos(streamPos); // Does the loader support these data ? - Ternary recognized = checkFunc(stream, parameters); - if (recognized == Ternary_False) + Ternary recognized = loader.streamChecker(stream, parameters); + if (recognized == Ternary::False) continue; - else if (recognized == Ternary_True) + else if (recognized == Ternary::True) found = true; // We move the stream to its old position stream.SetCursorPos(streamPos); // Load of the resource - ObjectRef resource = streamLoader(stream, parameters); + std::shared_ptr resource = loader.streamLoader(stream, parameters); if (resource) return resource; - if (recognized == Ternary_True) + if (recognized == Ternary::True) NazaraWarning("Loader failed"); } @@ -289,35 +294,35 @@ namespace Nz /*! * \brief Registers the loader + * \return A pointer to the registered Load which can be unsed to unregister it later * - * \param extensionGetter A function to test whether the extension (as a string) is supported by this loader - * \param checkFunc A function to check the stream with the parser - * \param streamLoader A function to load the data from a stream in the resource - * \param fileLoader Optional function to load the data from a file in the resource - * \param memoryLoader Optional function to load the data from a raw memory in the resource + * \param loader A collection of loader callbacks that will be registered + * + * \seealso UnregisterLoader */ template - void ResourceLoader::RegisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader, MemoryLoader memoryLoader) + auto ResourceLoader::RegisterLoader(Entry loader) -> const Entry* { - NazaraAssert(checkFunc || !streamLoader, "StreamLoader present without StreamChecker"); - NazaraAssert(fileLoader || memoryLoader || streamLoader, "A loader function is mandatory"); + NazaraAssert(loader.streamChecker || !loader.streamLoader, "StreamLoader present without StreamChecker"); + NazaraAssert(loader.fileLoader || loader.memoryLoader || loader.streamLoader, "A loader function is mandatory"); - Type::s_loaders.push_front(std::make_tuple(extensionGetter, checkFunc, streamLoader, fileLoader, memoryLoader)); + auto it = m_loaders.emplace(m_loaders.begin(), std::make_unique(std::move(loader))); + return it->get(); } /*! * \brief Unregisters the loader * - * \param extensionGetter A function to test whether the extension (as a string) is supported by this loader - * \param checkFunc A function to check the stream with the parser - * \param streamLoader A function to load the data from a stream in the resource - * \param fileLoader Optional function to load the data from a file in the resource - * \param memoryLoader Optional function to load the data from a raw memory in the resource + * \param loader A pointer to a loader returned by RegisterLoad + * + * \seealso RegisterLoader */ template - void ResourceLoader::UnregisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader, MemoryLoader memoryLoader) + void ResourceLoader::UnregisterLoader(const Entry* loader) { - Type::s_loaders.remove(std::make_tuple(extensionGetter, checkFunc, streamLoader, fileLoader, memoryLoader)); + auto it = std::find_if(m_loaders.begin(), m_loaders.end(), [&](const std::unique_ptr& loaderPtr) { return loaderPtr.get() == loader; }); + if (it != m_loaders.end()) + m_loaders.erase(it); } } diff --git a/include/Nazara/Core/ResourceManager.hpp b/include/Nazara/Core/ResourceManager.hpp index f3a388c03..d61f183f6 100644 --- a/include/Nazara/Core/ResourceManager.hpp +++ b/include/Nazara/Core/ResourceManager.hpp @@ -7,9 +7,9 @@ #ifndef NAZARA_RESOURCEMANAGER_HPP #define NAZARA_RESOURCEMANAGER_HPP -#include -#include +#include #include +#include #include namespace Nz @@ -17,26 +17,27 @@ namespace Nz template class ResourceManager { - friend Type; - public: - ResourceManager() = delete; - ~ResourceManager() = delete; + using Loader = ResourceLoader; - static void Clear(); + ResourceManager(Loader& loader); + explicit ResourceManager(const ResourceManager&) = default; + ResourceManager(ResourceManager&&) noexcept = default; + ~ResourceManager() = default; - static ObjectRef Get(const std::filesystem::path& filePath); - static const Parameters& GetDefaultParameters(); + void Clear(); - static void Purge(); - static void Register(const std::filesystem::path& filePath, ObjectRef resource); - static void SetDefaultParameters(const Parameters& params); - static void Unregister(const std::filesystem::path& filePath); + std::shared_ptr Get(const std::filesystem::path& filePath); + const Parameters& GetDefaultParameters(); + + void Register(const std::filesystem::path& filePath, std::shared_ptr resource); + void SetDefaultParameters(Parameters params); + void Unregister(const std::filesystem::path& filePath); + + ResourceManager& operator=(const ResourceManager&) = delete; + ResourceManager& operator=(ResourceManager&&) = delete; private: - static bool Initialize(); - static void Uninitialize(); - // https://stackoverflow.com/questions/51065244/is-there-no-standard-hash-for-stdfilesystempath struct PathHash { @@ -46,8 +47,9 @@ namespace Nz } }; - using ManagerMap = std::unordered_map, PathHash>; - using ManagerParams = Parameters; + std::unordered_map, PathHash> m_resources; + Loader& m_loader; + Parameters m_defaultParameters; }; } diff --git a/include/Nazara/Core/ResourceManager.inl b/include/Nazara/Core/ResourceManager.inl index 992b3e081..6e0c238d9 100644 --- a/include/Nazara/Core/ResourceManager.inl +++ b/include/Nazara/Core/ResourceManager.inl @@ -15,13 +15,23 @@ namespace Nz * \brief Core class that represents a resource manager */ + + /*! + * \brief Clears the content of the manager + */ + template + ResourceManager::ResourceManager(Loader& loader) : + m_loader(loader) + { + } + /*! * \brief Clears the content of the manager */ template void ResourceManager::Clear() { - Type::s_managerMap.clear(); + m_resources.clear(); } /*! @@ -31,22 +41,22 @@ namespace Nz * \param filePath Path to the asset that will be loaded */ template - ObjectRef ResourceManager::Get(const std::filesystem::path& filePath) + std::shared_ptr ResourceManager::Get(const std::filesystem::path& filePath) { std::filesystem::path absolutePath = std::filesystem::canonical(filePath); - auto it = Type::s_managerMap.find(absolutePath); - if (it == Type::s_managerMap.end()) + auto it = m_resources.find(absolutePath); + if (it == m_resources.end()) { - ObjectRef resource = Type::LoadFromFile(absolutePath, GetDefaultParameters()); + std::shared_ptr resource = m_loader.LoadFromFile(absolutePath, GetDefaultParameters()); if (!resource) { NazaraError("Failed to load resource from file: " + absolutePath.generic_u8string()); - return ObjectRef(); + return std::shared_ptr(); } NazaraDebug("Loaded resource from file " + absolutePath.generic_u8string()); - it = Type::s_managerMap.insert(std::make_pair(absolutePath, resource)).first; + it = m_resources.insert(std::make_pair(absolutePath, resource)).first; } return it->second; @@ -59,27 +69,7 @@ namespace Nz template const Parameters& ResourceManager::GetDefaultParameters() { - return Type::s_managerParameters; - } - - /*! - * \brief Purges the resource manager from every asset whose it is the only owner - */ - template - void ResourceManager::Purge() - { - auto it = Type::s_managerMap.begin(); - while (it != Type::s_managerMap.end()) - { - const ObjectRef& ref = it->second; - if (ref->GetReferenceCount() == 1) // Are we the only ones to own the resource ? - { - NazaraDebug("Purging resource from file " + ref->GetFilePath().generic_u8string()); - Type::s_managerMap.erase(it++); // Then we erase it - } - else - ++it; - } + return m_defaultParameters; } /*! @@ -89,11 +79,11 @@ namespace Nz * \param resource Object to associate with */ template - void ResourceManager::Register(const std::filesystem::path& filePath, ObjectRef resource) + void ResourceManager::Register(const std::filesystem::path& filePath, std::shared_ptr resource) { std::filesystem::path absolutePath = std::filesystem::canonical(filePath); - Type::s_managerMap[absolutePath] = resource; + m_resources[absolutePath] = resource; } /*! @@ -102,9 +92,9 @@ namespace Nz * \param params Default parameters for loading from file */ template - void ResourceManager::SetDefaultParameters(const Parameters& params) + void ResourceManager::SetDefaultParameters(Parameters params) { - Type::s_managerParameters = params; + m_defaultParameters = std::move(params); } /*! @@ -117,26 +107,7 @@ namespace Nz { std::filesystem::path absolutePath = std::filesystem::canonical(filePath); - Type::s_managerMap.erase(absolutePath); - } - - /*! - * \brief Initializes the resource manager - * \return true - */ - template - bool ResourceManager::Initialize() - { - return true; - } - - /*! - * \brief Uninitialize the resource manager - */ - template - void ResourceManager::Uninitialize() - { - Clear(); + m_resources.erase(absolutePath); } } diff --git a/plugins/Assimp/Plugin.cpp b/plugins/Assimp/Plugin.cpp index 6b5c43aef..c27a989df 100644 --- a/plugins/Assimp/Plugin.cpp +++ b/plugins/Assimp/Plugin.cpp @@ -84,9 +84,9 @@ Ternary CheckAnimation(Stream& /*stream*/, const AnimationParams& parameters) { bool skip; if (parameters.custom.GetBooleanParameter("SkipAssimpLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; - return Ternary_Unknown; + return Ternary::Unknown; } AnimationRef LoadAnimation(Stream& stream, const AnimationParams& parameters) @@ -179,9 +179,9 @@ Ternary CheckMesh(Stream& /*stream*/, const MeshParams& parameters) { bool skip; if (parameters.custom.GetBooleanParameter("SkipAssimpLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; - return Ternary_Unknown; + return Ternary::Unknown; } MeshRef LoadMesh(Stream& stream, const MeshParams& parameters) diff --git a/src/Nazara/Audio/Formats/sndfileLoader.cpp b/src/Nazara/Audio/Formats/sndfileLoader.cpp index 97a758d78..79fe22db9 100644 --- a/src/Nazara/Audio/Formats/sndfileLoader.cpp +++ b/src/Nazara/Audio/Formats/sndfileLoader.cpp @@ -245,10 +245,10 @@ namespace Nz if (file) { sf_close(file); - return Ternary_True; + return Ternary::True; } else - return Ternary_False; + return Ternary::False; } SoundStreamRef LoadSoundStreamFile(const std::filesystem::path& filePath, const SoundStreamParams& parameters) @@ -301,10 +301,10 @@ namespace Nz if (file) { sf_close(file); - return Ternary_True; + return Ternary::True; } else - return Ternary_False; + return Ternary::False; } SoundBufferRef LoadSoundBuffer(Stream& stream, const SoundBufferParams& parameters) diff --git a/src/Nazara/Utility/Formats/DDSLoader.cpp b/src/Nazara/Utility/Formats/DDSLoader.cpp index b269e0daa..2b16f0a93 100644 --- a/src/Nazara/Utility/Formats/DDSLoader.cpp +++ b/src/Nazara/Utility/Formats/DDSLoader.cpp @@ -27,7 +27,7 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeDDSLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; ByteStream byteStream(&stream); byteStream.SetDataEndianness(Endianness_LittleEndian); @@ -35,7 +35,7 @@ namespace Nz UInt32 magic; byteStream >> magic; - return (magic == DDS_Magic) ? Ternary_True : Ternary_False; + return (magic == DDS_Magic) ? Ternary::True : Ternary::False; } static ImageRef Load(Stream& stream, const ImageParams& parameters) diff --git a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp index a05d9c599..1abd9292e 100644 --- a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp +++ b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp @@ -398,15 +398,15 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeFreeTypeLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; FreeTypeStream face; face.SetStream(stream); if (face.Check()) - return Ternary_True; + return Ternary::True; else - return Ternary_False; + return Ternary::False; } FontRef LoadFile(const std::filesystem::path& filePath, const FontParams& parameters) diff --git a/src/Nazara/Utility/Formats/MD2Loader.cpp b/src/Nazara/Utility/Formats/MD2Loader.cpp index 890572d35..03ce610bd 100644 --- a/src/Nazara/Utility/Formats/MD2Loader.cpp +++ b/src/Nazara/Utility/Formats/MD2Loader.cpp @@ -29,7 +29,7 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeMD2Loader", &skip) && skip) - return Ternary_False; + return Ternary::False; UInt32 magic[2]; if (stream.Read(&magic[0], 2*sizeof(UInt32)) == 2*sizeof(UInt32)) @@ -40,10 +40,10 @@ namespace Nz #endif if (magic[0] == md2Ident && magic[1] == 8) - return Ternary_True; + return Ternary::True; } - return Ternary_False; + return Ternary::False; } MeshRef Load(Stream& stream, const MeshParams& parameters) diff --git a/src/Nazara/Utility/Formats/MD5AnimLoader.cpp b/src/Nazara/Utility/Formats/MD5AnimLoader.cpp index f069322ab..b07dff80f 100644 --- a/src/Nazara/Utility/Formats/MD5AnimLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5AnimLoader.cpp @@ -21,7 +21,7 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeMD5AnimLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; MD5AnimParser parser(stream); return parser.Check(); diff --git a/src/Nazara/Utility/Formats/MD5AnimParser.cpp b/src/Nazara/Utility/Formats/MD5AnimParser.cpp index 8a79d753d..d415f2c00 100644 --- a/src/Nazara/Utility/Formats/MD5AnimParser.cpp +++ b/src/Nazara/Utility/Formats/MD5AnimParser.cpp @@ -37,11 +37,11 @@ namespace Nz if (std::sscanf(&m_currentLine[0], " MD5Version %u", &version) == 1) { if (version == 10) - return Ternary_True; + return Ternary::True; } } - return Ternary_False; + return Ternary::False; } UInt32 MD5AnimParser::GetAnimatedComponentCount() const diff --git a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp index 18f6c028e..aebcf8396 100644 --- a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp @@ -29,7 +29,7 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeMD5MeshLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; MD5MeshParser parser(stream); return parser.Check(); diff --git a/src/Nazara/Utility/Formats/MD5MeshParser.cpp b/src/Nazara/Utility/Formats/MD5MeshParser.cpp index a2d00dc3e..dbc32e498 100644 --- a/src/Nazara/Utility/Formats/MD5MeshParser.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshParser.cpp @@ -37,11 +37,11 @@ namespace Nz if (std::sscanf(&m_currentLine[0], " MD5Version %u", &version) == 1) { if (version == 10) - return Ternary_True; + return Ternary::True; } } - return Ternary_False; + return Ternary::False; } const MD5MeshParser::Joint* MD5MeshParser::GetJoints() const diff --git a/src/Nazara/Utility/Formats/OBJLoader.cpp b/src/Nazara/Utility/Formats/OBJLoader.cpp index 98f6d9683..10e889d2f 100644 --- a/src/Nazara/Utility/Formats/OBJLoader.cpp +++ b/src/Nazara/Utility/Formats/OBJLoader.cpp @@ -33,13 +33,13 @@ namespace Nz bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeOBJLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; OBJParser parser; if (!parser.Check(stream)) - return Ternary_False; + return Ternary::False; - return Ternary_Unknown; + return Ternary::Unknown; } bool ParseMTL(Mesh* mesh, const std::filesystem::path& filePath, const std::string* materials, const OBJParser::Mesh* meshes, std::size_t meshCount) diff --git a/src/Nazara/Utility/Formats/PCXLoader.cpp b/src/Nazara/Utility/Formats/PCXLoader.cpp index 1dd8e8c64..328994191 100644 --- a/src/Nazara/Utility/Formats/PCXLoader.cpp +++ b/src/Nazara/Utility/Formats/PCXLoader.cpp @@ -49,16 +49,16 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativePCXLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; UInt8 manufacturer; if (stream.Read(&manufacturer, 1) == 1) { if (manufacturer == 0x0a) - return Ternary_True; + return Ternary::True; } - return Ternary_False; + return Ternary::False; } ImageRef Load(Stream& stream, const ImageParams& parameters) diff --git a/src/Nazara/Utility/Formats/STBLoader.cpp b/src/Nazara/Utility/Formats/STBLoader.cpp index 023572033..0472e0e91 100644 --- a/src/Nazara/Utility/Formats/STBLoader.cpp +++ b/src/Nazara/Utility/Formats/STBLoader.cpp @@ -46,13 +46,13 @@ namespace Nz { bool skip; if (parameters.custom.GetBooleanParameter("SkipNativeSTBLoader", &skip) && skip) - return Ternary_False; + return Ternary::False; int width, height, bpp; if (stbi_info_from_callbacks(&callbacks, &stream, &width, &height, &bpp)) - return Ternary_True; + return Ternary::True; else - return Ternary_False; + return Ternary::False; } ImageRef Load(Stream& stream, const ImageParams& parameters) diff --git a/tests/Engine/Audio/SoundBuffer.cpp b/tests/Engine/Audio/SoundBuffer.cpp index 17b6b4b3d..a77b603d1 100644 --- a/tests/Engine/Audio/SoundBuffer.cpp +++ b/tests/Engine/Audio/SoundBuffer.cpp @@ -9,7 +9,7 @@ SCENARIO("SoundBuffer", "[AUDIO][SOUNDBUFFER]") { WHEN("We load our sound") { - Nz::SoundBufferRef soundBuffer = Nz::SoundBuffer::LoadFromFile(GetResourceDir() / "Engine/Audio/Cat.flac"); + Nz::std::shared_ptr soundBuffer = Nz::SoundBuffer::LoadFromFile(GetResourceDir() / "Engine/Audio/Cat.flac"); REQUIRE(soundBuffer.IsValid()); THEN("We can ask the informations of the file")