Merge branch 'master' into NDK
Former-commit-id: f118c029ca94296495957816f910d412ae8a56f2
This commit is contained in:
@@ -4,13 +4,16 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_TUPLE_HPP
|
||||
#define NAZARA_TUPLE_HPP
|
||||
#ifndef NAZARA_ALGORITHM_CORE_HPP
|
||||
#define NAZARA_ALGORITHM_CORE_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <functional>
|
||||
#include <tuple>
|
||||
|
||||
template<typename T> void NzHashCombine(std::size_t& seed, const T& v);
|
||||
template<typename F, typename... ArgsT> void NzUnpackTuple(F func, const std::tuple<ArgsT...>& t);
|
||||
|
||||
#include <Nazara/Core/Tuple.inl>
|
||||
#include <Nazara/Core/Algorithm.inl>
|
||||
|
||||
#endif // NAZARA_TUPLE_HPP
|
||||
#endif // NAZARA_ALGORITHM_CORE_HPP
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
///TODO: Améliorer l'implémentation de UnpackTuple
|
||||
|
||||
template<unsigned int N>
|
||||
struct NzImplTupleUnpack
|
||||
{
|
||||
@@ -28,6 +30,23 @@ struct NzImplTupleUnpack<0>
|
||||
}
|
||||
};
|
||||
|
||||
// Algorithme venant de CityHash par Google
|
||||
// http://stackoverflow.com/questions/8513911/how-to-create-a-good-hash-combine-with-64-bit-output-inspired-by-boosthash-co
|
||||
template<typename T>
|
||||
void NzHashCombine(std::size_t& seed, const T& v)
|
||||
{
|
||||
const nzUInt64 kMul = 0x9ddfea08eb382d69ULL;
|
||||
|
||||
std::hash<T> hasher;
|
||||
nzUInt64 a = (hasher(v) ^ seed) * kMul;
|
||||
a ^= (a >> 47);
|
||||
|
||||
nzUInt64 b = (seed ^ a) * kMul;
|
||||
b ^= (b >> 47);
|
||||
|
||||
seed = static_cast<std::size_t>(b * kMul);
|
||||
}
|
||||
|
||||
template<typename F, typename... ArgsT>
|
||||
void NzUnpackTuple(F func, const std::tuple<ArgsT...>& t)
|
||||
{
|
||||
@@ -148,7 +148,7 @@ inline NzColor NzColor::FromHSV(float hue, float saturation, float value)
|
||||
if (NzNumberEquals(h, 6.f))
|
||||
h = 0; // hue must be < 1
|
||||
|
||||
int i = h;
|
||||
int i = static_cast<unsigned int>(h);
|
||||
float v1 = value * (1.f - s);
|
||||
float v2 = value * (1.f - s * (h - i));
|
||||
float v3 = value * (1.f - s * (1.f - (h - i)));
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/// Ce fichier sert à vérifier la valeur des constantes du fichier Config.hpp
|
||||
|
||||
#include <type_traits>
|
||||
#define CheckTypeAndVal(name, type, op, val, err) static_assert(std::is_ ##type <decltype(name)>::value && name op val, #type err)
|
||||
#define NazaraCheckTypeAndVal(name, type, op, val, err) static_assert(std::is_ ##type <decltype(name)>::value && name op val, #type err)
|
||||
|
||||
// On force la valeur de MANAGE_MEMORY en mode debug
|
||||
#if defined(NAZARA_DEBUG) && !NAZARA_CORE_MANAGE_MEMORY
|
||||
@@ -18,8 +18,10 @@
|
||||
#define NAZARA_CORE_MANAGE_MEMORY 1
|
||||
#endif
|
||||
|
||||
CheckTypeAndVal(NAZARA_CORE_DECIMAL_DIGITS, integral, >, 0, " shall be a strictly positive integer");
|
||||
CheckTypeAndVal(NAZARA_CORE_FILE_BUFFERSIZE, integral, >, 0, " shall be a strictly positive integer");
|
||||
CheckTypeAndVal(NAZARA_CORE_WINDOWS_CS_SPINLOCKS, integral, >=, 0, " shall be a positive integer");
|
||||
NazaraCheckTypeAndVal(NAZARA_CORE_DECIMAL_DIGITS, integral, >, 0, " shall be a strictly positive integer");
|
||||
NazaraCheckTypeAndVal(NAZARA_CORE_FILE_BUFFERSIZE, integral, >, 0, " shall be a strictly positive integer");
|
||||
NazaraCheckTypeAndVal(NAZARA_CORE_WINDOWS_CS_SPINLOCKS, integral, >=, 0, " shall be a positive integer");
|
||||
|
||||
#undef NazaraCheckTypeAndVal
|
||||
|
||||
#endif // NAZARA_CONFIG_CHECK_CORE_HPP
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
#if defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || (defined(__MIPS__) && defined(__MISPEB__)) || \
|
||||
defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || defined(__sparc__) || defined(__hppa__)
|
||||
#define NAZARA_BIG_ENDIAN
|
||||
#elif defined(__i386__) || defined(__i386) || defined(__X86__) || defined (__x86_64)
|
||||
#elif defined(__i386__) || defined(__i386) || defined(__X86__) || defined (__x86_64) || defined(_M_I86) || \
|
||||
defined(_M_IX86) || defined(_M_X64)
|
||||
#define NAZARA_LITTLE_ENDIAN
|
||||
#else
|
||||
#error Failed to identify endianness, you must define either NAZARA_BIG_ENDIAN or NAZARA_LITTLE_ENDIAN
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#ifndef NAZARA_FUNCTOR_HPP
|
||||
#define NAZARA_FUNCTOR_HPP
|
||||
|
||||
#include <Nazara/Core/Tuple.hpp>
|
||||
#include <Nazara/Core/Algorithm.hpp>
|
||||
|
||||
// Inspiré du code de la SFML par Laurent Gomila
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
class NAZARA_API NzHardwareInfo
|
||||
{
|
||||
public:
|
||||
static void Cpuid(nzUInt32 functionId, nzUInt32 subFunctionId, nzUInt32 result[4]);
|
||||
|
||||
static NzString GetProcessorBrandString();
|
||||
static unsigned int GetProcessorCount();
|
||||
static nzProcessorVendor GetProcessorVendor();
|
||||
@@ -23,6 +25,7 @@ class NAZARA_API NzHardwareInfo
|
||||
|
||||
static bool Initialize();
|
||||
|
||||
static bool IsCpuidSupported();
|
||||
static bool IsInitialized();
|
||||
|
||||
static void Uninitialize();
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include <set>
|
||||
#include <unordered_map>
|
||||
|
||||
///TODO: Révision
|
||||
|
||||
class NzDynLib;
|
||||
|
||||
class NAZARA_API NzPluginManager
|
||||
|
||||
@@ -50,8 +50,6 @@ class NAZARA_API NzRefCounted
|
||||
private:
|
||||
using ObjectListenerMap = std::unordered_map<NzObjectListener*, std::pair<int, unsigned int>>;
|
||||
|
||||
void RemoveObjectListenerIterator(ObjectListenerMap::iterator iterator) const;
|
||||
|
||||
NazaraMutexAttrib(m_mutex, mutable)
|
||||
|
||||
mutable ObjectListenerMap m_objectListeners;
|
||||
|
||||
@@ -87,10 +87,10 @@ class NAZARA_API NzString : public NzHashable
|
||||
const char* GetConstBuffer() const;
|
||||
unsigned int GetLength() const;
|
||||
unsigned int GetSize() const;
|
||||
char* GetUtf8Buffer(unsigned int* size = nullptr) const;
|
||||
char16_t* GetUtf16Buffer(unsigned int* size = nullptr) const;
|
||||
char32_t* GetUtf32Buffer(unsigned int* size = nullptr) const;
|
||||
wchar_t* GetWideBuffer(unsigned int* size = nullptr) const;
|
||||
std::string GetUtf8String() const;
|
||||
std::u16string GetUtf16String() const;
|
||||
std::u32string GetUtf32String() const;
|
||||
std::wstring GetWideString() const;
|
||||
NzString GetWord(unsigned int index, nzUInt32 flags = None) const;
|
||||
unsigned int GetWordPosition(unsigned int index, nzUInt32 flags = None) const;
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Functor.hpp>
|
||||
#include <Nazara/Core/NonCopyable.hpp>
|
||||
#include <ostream>
|
||||
#include <iosfwd>
|
||||
|
||||
class NzThreadImpl;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user