Reworked ResourceLoader

Former-commit-id: 9809e7fcd3657dfe90a0795986d0918f4ae1823c
This commit is contained in:
Lynix
2013-03-23 22:49:06 +01:00
parent 0603590549
commit 8f21a75c43
8 changed files with 121 additions and 58 deletions

View File

@@ -9,7 +9,6 @@
#include <Nazara/Core/String.hpp>
#include <list>
#include <set>
#include <tuple>
class NzInputStream;
@@ -18,17 +17,21 @@ template<typename Type, typename Parameters>
class NzResourceLoader
{
public:
using CheckFunction = bool (*)(NzInputStream& stream, const Parameters& parameters);
using LoadFunction = bool (*)(Type* resource, NzInputStream& stream, const Parameters& parameters);
using ExtensionGetter = bool (*)(const NzString& extension);
using FileLoader = bool (*)(Type* resource, const NzString& filePath, const Parameters& parameters);
using StreamChecker = bool (*)(NzInputStream& stream, const Parameters& parameters);
using StreamLoader = bool (*)(Type* resource, NzInputStream& stream, const Parameters& parameters);
static bool IsExtensionSupported(const NzString& extension);
static bool LoadFromFile(Type* resource, const NzString& 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, NzInputStream& stream, const Parameters& parameters = Parameters());
static void RegisterLoader(const NzString& fileExtensions, CheckFunction checkFunc, LoadFunction loadfunc);
static void UnregisterLoader(const NzString& fileExtensions, CheckFunction checkFunc, LoadFunction loadfunc);
static void RegisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader = nullptr);
static void UnregisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader = nullptr);
using Loader = std::tuple<std::set<NzString>, CheckFunction, LoadFunction>;
using Loader = std::tuple<ExtensionGetter, StreamChecker, StreamLoader, FileLoader>;
using LoaderList = std::list<Loader>;
};