ResourceLoader SteamChecker now return a ternary

Former-commit-id: 2ee274ebb2b61f39e93f6ff2306b5a326b158594
This commit is contained in:
Lynix
2013-04-27 11:51:42 +02:00
parent 226d291ea6
commit 6699ce328f
16 changed files with 111 additions and 72 deletions

View File

@@ -7,6 +7,26 @@
#ifndef NAZARA_ENUMS_CORE_HPP
#define NAZARA_ENUMS_CORE_HPP
enum nzEndianness
{
nzEndianness_Unknown = -1,
nzEndianness_BigEndian,
nzEndianness_LittleEndian,
nzEndianness_Max = nzEndianness_LittleEndian
};
enum nzErrorType
{
nzErrorType_AssertFailed,
nzErrorType_Internal,
nzErrorType_Normal,
nzErrorType_Warning,
nzErrorType_Max = nzErrorType_Warning
};
enum nzPlugin
{
nzPlugin_Assimp,
@@ -52,26 +72,6 @@ enum nzProcessorVendor
nzProcessorVendor_Max = nzProcessorVendor_Vortex
};
enum nzEndianness
{
nzEndianness_Unknown = -1,
nzEndianness_BigEndian,
nzEndianness_LittleEndian,
nzEndianness_Max = nzEndianness_LittleEndian
};
enum nzErrorType
{
nzErrorType_AssertFailed,
nzErrorType_Internal,
nzErrorType_Normal,
nzErrorType_Warning,
nzErrorType_Max = nzErrorType_Warning
};
enum nzStreamOptionFlags
{
nzStreamOption_None = 0x0,
@@ -79,4 +79,13 @@ enum nzStreamOptionFlags
nzStreamOption_Text = 0x1
};
enum nzTernary
{
nzTernary_False,
nzTernary_True,
nzTernary_Unknown,
nzTernary_Max = nzTernary_Unknown
};
#endif // NAZARA_ENUMS_CORE_HPP

View File

@@ -7,6 +7,7 @@
#ifndef NAZARA_RESOURCELOADER_HPP
#define NAZARA_RESOURCELOADER_HPP
#include <Nazara/Core/Enums.hpp>
#include <Nazara/Core/String.hpp>
#include <list>
#include <tuple>
@@ -19,7 +20,7 @@ class NzResourceLoader
public:
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 StreamChecker = nzTernary (*)(NzInputStream& stream, const Parameters& parameters);
using StreamLoader = bool (*)(Type* resource, NzInputStream& stream, const Parameters& parameters);
static bool IsExtensionSupported(const NzString& extension);

View File

@@ -64,17 +64,25 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
}
}
nzTernary recognized = nzTernary_Unknown;
if (fileLoader)
{
if (checkFunc)
{
file.SetCursorPos(0);
if (!checkFunc(file, parameters))
recognized = checkFunc(file, parameters);
if (recognized == nzTernary_False)
continue;
else
found = true;
}
else
{
recognized = nzTernary_Unknown;
found = true;
}
found = true;
if (fileLoader(resource, filePath, parameters))
return true;
}
@@ -82,17 +90,20 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
{
file.SetCursorPos(0);
if (!checkFunc(file, parameters))
recognized = checkFunc(file, parameters);
if (recognized == nzTernary_False)
continue;
else if (recognized == nzTernary_True)
found = true;
file.SetCursorPos(0);
found = true;
if (streamLoader(resource, file, parameters))
return true;
}
NazaraWarning("Loader failed");
if (recognized == nzTernary_True)
NazaraWarning("Loader failed");
}
if (found)
@@ -138,18 +149,21 @@ bool NzResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, NzInputS
stream.SetCursorPos(streamPos);
// Le loader supporte-t-il les données ?
if (!checkFunc(stream, parameters))
nzTernary recognized = checkFunc(stream, parameters);
if (recognized == nzTernary_False)
continue;
else if (recognized == nzTernary_True)
found = true;
// On repositionne le stream à son ancienne position
stream.SetCursorPos(streamPos);
// Chargement de la ressource
found = true;
if (streamLoader(resource, stream, parameters))
return true;
NazaraWarning("Loader failed");
if (recognized == nzTernary_True)
NazaraWarning("Loader failed");
}
if (found)