From e91cde657ba0d347fbc38c3a59e6ab0b3cbb799c Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 8 May 2012 08:20:57 +0200 Subject: [PATCH] Fixed per-class thread safety --- include/Nazara/Core/ByteArray.hpp | 6 ++-- include/Nazara/Core/Clock.hpp | 6 ++-- .../Nazara/Core/Debug/MemoryLeakTracker.hpp | 4 --- include/Nazara/Core/Directory.hpp | 8 ++--- include/Nazara/Core/DynLib.hpp | 6 ++-- include/Nazara/Core/Endianness.hpp | 4 --- include/Nazara/Core/Error.hpp | 4 --- include/Nazara/Core/File.hpp | 8 ++--- include/Nazara/Core/Format.hpp | 4 --- include/Nazara/Core/Hash.hpp | 4 --- include/Nazara/Core/Hash/CRC32.hpp | 4 --- include/Nazara/Core/Hash/Fletcher16.hpp | 4 --- include/Nazara/Core/Hash/MD5.hpp | 4 --- include/Nazara/Core/Hash/Whirlpool.hpp | 4 --- include/Nazara/Core/HashDigest.hpp | 4 --- include/Nazara/Core/HashImpl.hpp | 4 --- include/Nazara/Core/Lock.hpp | 4 --- include/Nazara/Core/Log.hpp | 8 ++--- include/Nazara/Core/Mutex.hpp | 4 --- include/Nazara/Core/Semaphore.hpp | 4 --- include/Nazara/Core/String.hpp | 9 +++--- include/Nazara/Core/StringStream.hpp | 8 ++--- include/Nazara/Core/Thread.hpp | 4 --- include/Nazara/Core/ThreadCondition.hpp | 4 --- include/Nazara/Core/ThreadSafety.hpp | 17 +++++----- include/Nazara/Core/Unicode.hpp | 4 --- include/Nazara/Math/Matrix4.hpp | 15 ++++++--- include/Nazara/Math/Matrix4.inl | 31 ++++++++++++++++++- include/Nazara/Math/ThreadSafety.hpp | 4 +-- src/Nazara/Core/Clock.cpp | 3 +- src/Nazara/Core/Directory.cpp | 3 +- src/Nazara/Core/DynLib.cpp | 4 +-- src/Nazara/Core/Error.cpp | 2 -- src/Nazara/Core/File.cpp | 3 +- src/Nazara/Core/HashDigest.cpp | 3 -- src/Nazara/Core/Lock.cpp | 2 -- src/Nazara/Core/Log.cpp | 3 +- src/Nazara/Core/Mutex.cpp | 2 -- src/Nazara/Core/Semaphore.cpp | 2 -- src/Nazara/Core/String.cpp | 4 +-- src/Nazara/Core/StringStream.cpp | 4 +-- src/Nazara/Core/Thread.cpp | 2 -- src/Nazara/Core/ThreadCondition.cpp | 2 -- src/Nazara/Core/Unicode.cpp | 2 -- 44 files changed, 90 insertions(+), 145 deletions(-) diff --git a/include/Nazara/Core/ByteArray.hpp b/include/Nazara/Core/ByteArray.hpp index b93745ec9..5a523f6e8 100644 --- a/include/Nazara/Core/ByteArray.hpp +++ b/include/Nazara/Core/ByteArray.hpp @@ -7,10 +7,10 @@ #ifndef NAZARA_BYTEARRAY_HPP #define NAZARA_BYTEARRAY_HPP -#define NAZARA_BYTEARRAY - #include #include + +#define NAZARA_CLASS_BYTEARRAY #include class NzAbstractHash; @@ -119,6 +119,6 @@ namespace std NAZARA_API void swap(NzByteArray& lhs, NzByteArray& rhs); } -#undef NAZARA_BYTEARRAY +#undef NAZARA_CLASS_BYTEARRAY #endif // NAZARA_BYTEARRAY_HPP diff --git a/include/Nazara/Core/Clock.hpp b/include/Nazara/Core/Clock.hpp index 9d5fdd8c8..426b848e9 100644 --- a/include/Nazara/Core/Clock.hpp +++ b/include/Nazara/Core/Clock.hpp @@ -7,9 +7,9 @@ #ifndef NAZARA_CLOCK_HPP #define NAZARA_CLOCK_HPP -#define NAZARA_CLOCK - #include + +#define NAZARA_CLASS_CLOCK #include class NAZARA_API NzClock @@ -40,6 +40,6 @@ typedef nzUInt64 (*NzClockFunction)(); extern NAZARA_API NzClockFunction NzGetMicroseconds; extern NAZARA_API NzClockFunction NzGetMilliseconds; -#undef NAZARA_CLOCK +#undef NAZARA_CLASS_CLOCK #endif // NAZARA_CLOCK_HPP diff --git a/include/Nazara/Core/Debug/MemoryLeakTracker.hpp b/include/Nazara/Core/Debug/MemoryLeakTracker.hpp index 070a90040..6e0cc072d 100644 --- a/include/Nazara/Core/Debug/MemoryLeakTracker.hpp +++ b/include/Nazara/Core/Debug/MemoryLeakTracker.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_DEBUG_MEMORYLEAKTRACKER_HPP #define NAZARA_DEBUG_MEMORYLEAKTRACKER_HPP -#define NAZARA_DEBUG_MEMORYLEAKTRACKER - #include #include #include @@ -34,6 +32,4 @@ NAZARA_API void* operator new[](std::size_t size, const char* file, unsigned int NAZARA_API void operator delete(void* ptr, const char* file, unsigned int line) throw(); NAZARA_API void operator delete[](void* ptr, const char* file, unsigned int line) throw(); -#undef NAZARA_DEBUG_MEMORYLEAKTRACKER - #endif // NAZARA_DEBUG_MEMORYLEAKTRACKER_HPP diff --git a/include/Nazara/Core/Directory.hpp b/include/Nazara/Core/Directory.hpp index 7bd9303d5..93b0d1328 100644 --- a/include/Nazara/Core/Directory.hpp +++ b/include/Nazara/Core/Directory.hpp @@ -7,11 +7,8 @@ #ifndef NAZARA_DIRECTORY_HPP #define NAZARA_DIRECTORY_HPP -#define NAZARA_DIRECTORY - #include #include -#include #if defined(NAZARA_PLATFORM_WINDOWS) #define NAZARA_DIRECTORY_SEPARATOR '\\' @@ -22,6 +19,9 @@ #define NAZARA_DIRECTORY_SEPARATOR '/' #endif +#define NAZARA_CLASS_DIRECTORY +#include + class NzDirectoryImpl; class NAZARA_API NzDirectory @@ -59,6 +59,6 @@ class NAZARA_API NzDirectory NzDirectoryImpl* m_impl; }; -#undef NAZARA_DIRECTORY +#undef NAZARA_CLASS_DIRECTORY #endif // NAZARA_DIRECTORY_HPP diff --git a/include/Nazara/Core/DynLib.hpp b/include/Nazara/Core/DynLib.hpp index 03306c58b..c23939abb 100644 --- a/include/Nazara/Core/DynLib.hpp +++ b/include/Nazara/Core/DynLib.hpp @@ -7,13 +7,13 @@ #ifndef NAZARA_DYNLIB_HPP #define NAZARA_DYNLIB_HPP -#define NAZARA_DYNLIB - #include #include -#include #include +#define NAZARA_DYNLIB +#include + class NzDynLibImpl; typedef int (*NzDynLibFunc)(); // Type "générique" de pointeur sur fonction diff --git a/include/Nazara/Core/Endianness.hpp b/include/Nazara/Core/Endianness.hpp index 794c44756..763b0fc07 100644 --- a/include/Nazara/Core/Endianness.hpp +++ b/include/Nazara/Core/Endianness.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_ENDIANNESS_HPP #define NAZARA_ENDIANNESS_HPP -#define NAZARA_ENDIANNESS - #include #if defined(NAZARA_ENDIANNESS_BIGENDIAN) @@ -45,6 +43,4 @@ inline nzEndianness NzGetPlatformEndianness(); #include -#undef NAZARA_ENDIANNESS - #endif // NAZARA_ENDIANNESS_HPP diff --git a/include/Nazara/Core/Error.hpp b/include/Nazara/Core/Error.hpp index 8a873555d..30af17177 100644 --- a/include/Nazara/Core/Error.hpp +++ b/include/Nazara/Core/Error.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_ERROR_HPP #define NAZARA_ERROR_HPP -#define NAZARA_ERROR - #include #include @@ -34,6 +32,4 @@ NAZARA_API void NzError(nzErrorType type, const NzString& error, unsigned int li NAZARA_API unsigned int NzGetLastSystemErrorCode(); NAZARA_API NzString NzGetLastSystemError(unsigned int code = NzGetLastSystemErrorCode()); -#undef NAZARA_ERROR - #endif // NAZARA_ERROR_HPP diff --git a/include/Nazara/Core/File.hpp b/include/Nazara/Core/File.hpp index cc5457484..2af83c1bc 100644 --- a/include/Nazara/Core/File.hpp +++ b/include/Nazara/Core/File.hpp @@ -7,17 +7,17 @@ #ifndef NAZARA_FILE_HPP #define NAZARA_FILE_HPP -#define NAZARA_FILE - #include #include #include #include #include #include -#include #include +#define NAZARA_CLASS_FILE +#include + class NzFileImpl; class NAZARA_API NzFile : public NzHashable, NzNonCopyable @@ -115,6 +115,6 @@ class NAZARA_API NzFile : public NzHashable, NzNonCopyable unsigned int m_openMode; }; -#undef NAZARA_FILE +#undef NAZARA_CLASS_FILE #endif // NAZARA_FILE_HPP diff --git a/include/Nazara/Core/Format.hpp b/include/Nazara/Core/Format.hpp index 7606733d2..54c553bf2 100644 --- a/include/Nazara/Core/Format.hpp +++ b/include/Nazara/Core/Format.hpp @@ -7,12 +7,8 @@ #ifndef NAZARA_FORMAT_HPP #define NAZARA_FORMAT_HPP -#define NAZARA_FORMAT - #include template NzString NzFormat(const NzString& str, Args... args); -#undef NAZARA_FORMAT - #endif // NAZARA_FORMAT_HPP diff --git a/include/Nazara/Core/Hash.hpp b/include/Nazara/Core/Hash.hpp index d648efb6b..a2913a689 100644 --- a/include/Nazara/Core/Hash.hpp +++ b/include/Nazara/Core/Hash.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_HASH_HPP #define NAZARA_HASH_HPP -#define NAZARA_HASH - #include #include #include @@ -28,6 +26,4 @@ class NAZARA_API NzHash : NzNonCopyable NzHashImpl* m_impl; }; -#undef NAZARA_HASH - #endif // NAZARA_HASH_HPP diff --git a/include/Nazara/Core/Hash/CRC32.hpp b/include/Nazara/Core/Hash/CRC32.hpp index 343ddb97a..3ca48046d 100644 --- a/include/Nazara/Core/Hash/CRC32.hpp +++ b/include/Nazara/Core/Hash/CRC32.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_HASH_CRC32_HPP #define NAZARA_HASH_CRC32_HPP -#define NAZARA_HASH_CRC32 - #include #include #include @@ -32,6 +30,4 @@ class NAZARA_API NzHashCRC32 : public NzHashImpl NzHashCRC32_state* m_state; }; -#undef NAZARA_HASH_CRC32 - #endif // NAZARA_HASH_CRC32_HPP diff --git a/include/Nazara/Core/Hash/Fletcher16.hpp b/include/Nazara/Core/Hash/Fletcher16.hpp index aa3740447..ea61ce4e0 100644 --- a/include/Nazara/Core/Hash/Fletcher16.hpp +++ b/include/Nazara/Core/Hash/Fletcher16.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_HASH_FLETCHER16_HPP #define NAZARA_HASH_FLETCHER16_HPP -#define NAZARA_HASH_FLETCHER16 - #include #include #include @@ -33,6 +31,4 @@ class NAZARA_API NzHashFletcher16 : public NzHashImpl NzHashFletcher16_state* m_state; }; -#undef NAZARA_HASH_FLETCHER16 - #endif // NAZARA_HASH_FLETCHER16_HPP diff --git a/include/Nazara/Core/Hash/MD5.hpp b/include/Nazara/Core/Hash/MD5.hpp index 552fdbe41..30dbdedc6 100644 --- a/include/Nazara/Core/Hash/MD5.hpp +++ b/include/Nazara/Core/Hash/MD5.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_HASH_MD5_HPP #define NAZARA_HASH_MD5_HPP -#define NAZARA_HASH_MD5 - #include #include #include @@ -32,6 +30,4 @@ class NAZARA_API NzHashMD5 : public NzHashImpl NzHashMD5_state* m_state; }; -#undef NAZARA_HASH_MD5 - #endif // NAZARA_HASH_MD5_HPP diff --git a/include/Nazara/Core/Hash/Whirlpool.hpp b/include/Nazara/Core/Hash/Whirlpool.hpp index 9e71f433d..b26cfc504 100644 --- a/include/Nazara/Core/Hash/Whirlpool.hpp +++ b/include/Nazara/Core/Hash/Whirlpool.hpp @@ -5,8 +5,6 @@ #ifndef NAZARA_HASH_WHIRLPOOL_HPP #define NAZARA_HASH_WHIRLPOOL_HPP -#define NAZARA_HASH_WHIRLPOOL - #include #include #include @@ -30,6 +28,4 @@ class NAZARA_API NzHashWhirlpool : public NzHashImpl NzHashWhirlpool_state* m_state; }; -#undef NAZARA_HASH_WHIRLPOOL - #endif // NAZARA_HASH_WHIRLPOOL_HPP diff --git a/include/Nazara/Core/HashDigest.hpp b/include/Nazara/Core/HashDigest.hpp index 03c695e61..ad6493e27 100644 --- a/include/Nazara/Core/HashDigest.hpp +++ b/include/Nazara/Core/HashDigest.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_HASHDIGEST_HPP #define NAZARA_HASHDIGEST_HPP -#define NAZARA_HASHDIGEST - #include #include #include @@ -50,6 +48,4 @@ class NAZARA_API NzHashDigest unsigned short m_digestLength; }; -#undef NAZARA_HASHDIGEST - #endif // NAZARA_HASHDIGEST_HPP diff --git a/include/Nazara/Core/HashImpl.hpp b/include/Nazara/Core/HashImpl.hpp index efb854223..b2d7cec5c 100644 --- a/include/Nazara/Core/HashImpl.hpp +++ b/include/Nazara/Core/HashImpl.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_HASHIMPL_HPP #define NAZARA_HASHIMPL_HPP -#define NAZARA_HASHIMPL - #include #include @@ -25,6 +23,4 @@ class NAZARA_API NzHashImpl : NzNonCopyable virtual NzHashDigest End() = 0; }; -#undef NAZARA_HASHIMPL - #endif // NAZARA_HASHIMPL_HPP diff --git a/include/Nazara/Core/Lock.hpp b/include/Nazara/Core/Lock.hpp index 254b7222b..62e3707a2 100644 --- a/include/Nazara/Core/Lock.hpp +++ b/include/Nazara/Core/Lock.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_LOCK_HPP #define NAZARA_LOCK_HPP -#define NAZARA_LOCK - #include class NzMutex; @@ -23,6 +21,4 @@ class NAZARA_API NzLock NzMutex& m_mutex; }; -#undef NAZARA_LOCK - #endif // NAZARA_LOCK_HPP diff --git a/include/Nazara/Core/Log.hpp b/include/Nazara/Core/Log.hpp index 923483421..71e69c418 100644 --- a/include/Nazara/Core/Log.hpp +++ b/include/Nazara/Core/Log.hpp @@ -7,14 +7,14 @@ #ifndef NAZARA_LOG_HPP #define NAZARA_LOG_HPP -#define NAZARA_LOG - #include #include #include -#include #include +#define NAZARA_CLASS_LOG +#include + #define NazaraLog NzLog::Instance() class NzFile; @@ -50,6 +50,6 @@ class NAZARA_API NzLog : NzNonCopyable bool m_writeTime; }; -#undef NAZARA_LOGGER +#undef NAZARA_CLASS_LOG #endif // NAZARA_LOGGER_HPP diff --git a/include/Nazara/Core/Mutex.hpp b/include/Nazara/Core/Mutex.hpp index adbd0383b..bd534d4a5 100644 --- a/include/Nazara/Core/Mutex.hpp +++ b/include/Nazara/Core/Mutex.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_MUTEX_HPP #define NAZARA_MUTEX_HPP -#define NAZARA_MUTEX - #include #include @@ -31,6 +29,4 @@ class NAZARA_API NzMutex : NzNonCopyable NzMutexImpl* m_impl; }; -#undef NAZARA_MUTEX - #endif // NAZARA_MUTEX_HPP diff --git a/include/Nazara/Core/Semaphore.hpp b/include/Nazara/Core/Semaphore.hpp index fb7294b28..24ff442b4 100644 --- a/include/Nazara/Core/Semaphore.hpp +++ b/include/Nazara/Core/Semaphore.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_SEMAPHORE_HPP #define NAZARA_SEMAPHORE_HPP -#define NAZARA_SEMAPHORE - #include #include @@ -29,6 +27,4 @@ class NAZARA_API NzSemaphore : NzNonCopyable NzSemaphoreImpl* m_impl; }; -#undef NAZARA_SEMAPHORE - #endif // NAZARA_SEMAPHORE_HPP diff --git a/include/Nazara/Core/String.hpp b/include/Nazara/Core/String.hpp index adeaa1ed9..86eee15be 100644 --- a/include/Nazara/Core/String.hpp +++ b/include/Nazara/Core/String.hpp @@ -7,16 +7,16 @@ #ifndef NAZARA_STRING_HPP #define NAZARA_STRING_HPP -#define NAZARA_STRING - #include #include -#include #include #include #include #include +#define NAZARA_CLASS_STRING +#include + class NzAbstractHash; class NzHashDigest; @@ -317,7 +317,6 @@ namespace std NAZARA_API void swap(NzString& lhs, NzString& rhs); } -#undef NAZARA_STRING +#undef NAZARA_CLASS_STRING #endif // NAZARA_STRING_HPP - diff --git a/include/Nazara/Core/StringStream.hpp b/include/Nazara/Core/StringStream.hpp index 7302cf0ec..d07dc7ce8 100644 --- a/include/Nazara/Core/StringStream.hpp +++ b/include/Nazara/Core/StringStream.hpp @@ -7,14 +7,14 @@ #ifndef NAZARA_STRINGSTREAM_HPP #define NAZARA_STRINGSTREAM_HPP -#define NAZARA_STRINGSTREAM - #include #include -#include #include #include +#define NAZARA_CLASS_STRINGSTREAM +#include + class NAZARA_API NzStringStream { public: @@ -51,6 +51,6 @@ class NAZARA_API NzStringStream unsigned int m_bufferSize; }; -#undef NAZARA_STRINGSTREAM +#undef NAZARA_CLASS_STRINGSTREAM #endif // NAZARA_STRINGSTREAM_HPP diff --git a/include/Nazara/Core/Thread.hpp b/include/Nazara/Core/Thread.hpp index 2f1a61879..49c782818 100644 --- a/include/Nazara/Core/Thread.hpp +++ b/include/Nazara/Core/Thread.hpp @@ -9,8 +9,6 @@ #ifndef NAZARA_THREAD_HPP #define NAZARA_THREAD_HPP -#define NAZARA_THREAD - #include #include #include @@ -64,6 +62,4 @@ class NAZARA_API NzThread : NzNonCopyable #include -#undef NAZARA_THREAD - #endif // NAZARA_THREAD_HPP diff --git a/include/Nazara/Core/ThreadCondition.hpp b/include/Nazara/Core/ThreadCondition.hpp index 9d9e82fb9..47a130847 100644 --- a/include/Nazara/Core/ThreadCondition.hpp +++ b/include/Nazara/Core/ThreadCondition.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_THREADCONDITION_HPP #define NAZARA_THREADCONDITION_HPP -#define NAZARA_THREADCONDITION - #include class NzMutex; @@ -30,6 +28,4 @@ class NAZARA_API NzThreadCondition NzThreadConditionImpl* m_impl; }; -#undef NAZARA_THREADCONDITION - #endif // NAZARA_THREADCONDITION_HPP diff --git a/include/Nazara/Core/ThreadSafety.hpp b/include/Nazara/Core/ThreadSafety.hpp index 339c1abfe..a37e9c5c5 100644 --- a/include/Nazara/Core/ThreadSafety.hpp +++ b/include/Nazara/Core/ThreadSafety.hpp @@ -15,15 +15,14 @@ #undef NazaraNamedLock #if NAZARA_CORE_THREADSAFE && (\ - (NAZARA_THREADSAFETY_BYTEARRAY && (defined(NAZARA_BYTEARRAY) || defined(NAZARA_BYTEARRAY_CPP))) || \ - (NAZARA_THREADSAFETY_CLOCK && (defined(NAZARA_CLOCK) || defined(NAZARA_CLOCK_CPP))) || \ - (NAZARA_THREADSAFETY_DIRECTORY && (defined(NAZARA_DIRECTORY) || defined(NAZARA_DIRECTORY_CPP))) || \ - (NAZARA_THREADSAFETY_DYNLIB && (defined(NAZARA_DYNLIB) || defined(NAZARA_DYNLIB_CPP))) || \ - (NAZARA_THREADSAFETY_FILE && (defined(NAZARA_FILE) || defined(NAZARA_FILE_CPP))) || \ - (NAZARA_THREADSAFETY_HASHDIGEST && (defined(NAZARA_HASHDIGEST) || defined(NAZARA_HASHDIGEST_CPP))) || \ - (NAZARA_THREADSAFETY_LOG && (defined(NAZARA_LOG) || defined(NAZARA_LOG_CPP))) || \ - (NAZARA_THREADSAFETY_STRING && (defined(NAZARA_STRING) || defined(NAZARA_STRING_CPP))) || \ - (NAZARA_THREADSAFETY_STRINGSTREAM && (defined(NAZARA_STRINGSTREAM) || defined(NAZARA_STRINGSTREAM_CPP)))) + (NAZARA_THREADSAFETY_BYTEARRAY && defined(NAZARA_CLASS_BYTEARRAY)) || \ + (NAZARA_THREADSAFETY_CLOCK && defined(NAZARA_CLASS_CLOCK)) || \ + (NAZARA_THREADSAFETY_DIRECTORY && defined(NAZARA_CLASS_DIRECTORY)) || \ + (NAZARA_THREADSAFETY_DYNLIB && defined(NAZARA_CLASS_DYNLIB)) || \ + (NAZARA_THREADSAFETY_FILE && defined(NAZARA_CLASS_FILE)) || \ + (NAZARA_THREADSAFETY_LOG && defined(NAZARA_CLASS_LOG)) || \ + (NAZARA_THREADSAFETY_STRING && defined(NAZARA_CLASS_STRING)) || \ + (NAZARA_THREADSAFETY_STRINGSTREAM && defined(NAZARA_CLASS_STRINGSTREAM))) #include #include diff --git a/include/Nazara/Core/Unicode.hpp b/include/Nazara/Core/Unicode.hpp index a32cc68e8..7f9fd0940 100644 --- a/include/Nazara/Core/Unicode.hpp +++ b/include/Nazara/Core/Unicode.hpp @@ -7,8 +7,6 @@ #ifndef NAZARA_UNICODE_HPP #define NAZARA_UNICODE_HPP -#define NAZARA_UNICODE - #include namespace NzUnicode @@ -105,6 +103,4 @@ namespace NzUnicode char32_t GetUppercase(char32_t character); } -#undef NAZARA_UNICODE - #endif // NAZARA_UNICODE_HPP diff --git a/include/Nazara/Math/Matrix4.hpp b/include/Nazara/Math/Matrix4.hpp index aab7e6efa..7c78adc38 100644 --- a/include/Nazara/Math/Matrix4.hpp +++ b/include/Nazara/Math/Matrix4.hpp @@ -9,6 +9,9 @@ #include +#define NAZARA_CLASS_MATRIX4 +#include + template class NzEulerAngles; template class NzQuaternion; template class NzVector2; @@ -51,6 +54,7 @@ template class NzMatrix4 template void Set(const NzMatrix4& matrix); void SetIdentity(); void SetLookAt(const NzVector3& eye, const NzVector3& center, const NzVector3& up); + void SetOrtho(T left, T top, T width, T height, T zNear = -1.0, T zFar = 1.0); void SetPerspective(T angle, T ratio, T zNear, T zFar); void SetRotation(const NzQuaternion& rotation); void SetScale(const NzVector3& scale); @@ -84,6 +88,7 @@ template class NzMatrix4 NzMatrix4& operator*=(T scalar); static NzMatrix4 LookAt(const NzVector3& eye, const NzVector3& center, const NzVector3& up); + static NzMatrix4 Ortho(T left, T top, T width, T height, T zNear = -1.0, T zFar = 1.0); static NzMatrix4 Perspective(T angle, T ratio, T zNear, T zFar); static NzMatrix4 Rotate(const NzQuaternion& rotation); static NzMatrix4 Scale(const NzVector3& scale); @@ -96,10 +101,10 @@ template class NzMatrix4 { } - T m11, m12, m13, m14, - m21, m22, m23, m24, - m31, m32, m33, m34, - m41, m42, m43, m44; + T m11, m12, m13, m14; + T m21, m22, m23, m24; + T m31, m32, m33, m34; + T m41, m42, m43, m44; unsigned int refCount; @@ -118,6 +123,8 @@ template std::ostream& operator<<(std::ostream& out, const NzMatrix4 typedef NzMatrix4 NzMatrix4d; typedef NzMatrix4 NzMatrix4f; +#undef NAZARA_CLASS_MATRIX4 + #include #endif // NAZARA_MATRIX4_HPP diff --git a/include/Nazara/Math/Matrix4.inl b/include/Nazara/Math/Matrix4.inl index ca3b68307..5b2d1df09 100644 --- a/include/Nazara/Math/Matrix4.inl +++ b/include/Nazara/Math/Matrix4.inl @@ -14,6 +14,9 @@ #include #include #include + +#define NAZARA_CLASS_MATRIX4 +#include #include template @@ -289,6 +292,22 @@ void NzMatrix4::SetIdentity() 0.0, 0.0, 0.0, 1.0); } +template +void NzMatrix4::SetOrtho(T left, T top, T width, T height, T zNear, T zFar) +{ + #if NAZARA_MATH_MATRIX_COLUMN_MAJOR + Set(2.0/(width-left), 0.0, 0.0, -(width+left)/(width-left), + 0.0, 2.0/(top-height), 0.0, -(top+height)/(top-height), + 0.0, 0.0, -2.0/(zFar-zNear), -(zFar+zNear)/(zFar-zNear), + 0.0, 0.0, 0.0, 1.0); + #else + Set(2.0/(width-left), 0.0, 0.0, 0.0, + 0.0, 2.0/(top-height), 0.0, 0.0, + 0.0, 0.0, -2.0/(zFar-zNear), 0.0, + -(width+left)/(width-left), -(top+height)/(top-height), -(zFar+zNear)/(zFar-zNear), 1.0); + #endif +} + template void NzMatrix4::SetLookAt(const NzVector3& eye, const NzVector3& center, const NzVector3& up) { @@ -320,7 +339,7 @@ void NzMatrix4::SetPerspective(T angle, T ratio, T zNear, T zFar) angle = NzDegreeToRadian(angle/2); #endif - T f = 1 / std::tan(angle); + auto f = 1 / std::tan(angle); #if NAZARA_MATH_MATRIX_COLUMN_MAJOR Set(f / ratio, 0.0, 0.0, 0.0, @@ -713,6 +732,15 @@ NzMatrix4 NzMatrix4::LookAt(const NzVector3& eye, const NzVector3& c return matrix; } +template +NzMatrix4 NzMatrix4::Ortho(T left, T top, T width, T height, T zNear, T zFar) +{ + NzMatrix4 matrix; + matrix.SetOrtho(left, top, width, height, zNear, zFar); + + return matrix; +} + template NzMatrix4 NzMatrix4::Perspective(T angle, T ratio, T zNear, T zFar) { @@ -789,5 +817,6 @@ void NzMatrix4::ReleaseMatrix() m_sharedMatrix = nullptr; } +#undef NAZARA_MATRIX4_INL #include diff --git a/include/Nazara/Math/ThreadSafety.hpp b/include/Nazara/Math/ThreadSafety.hpp index e5c7bbde2..979727fa3 100644 --- a/include/Nazara/Math/ThreadSafety.hpp +++ b/include/Nazara/Math/ThreadSafety.hpp @@ -15,8 +15,8 @@ #undef NazaraNamedLock #if NAZARA_MATH_THREADSAFE && (\ - (NAZARA_THREADSAFETY_MATRIX3 && (defined(NAZARA_MATRIX3) || defined(NAZARA_MATRIX3_CPP))) || \ - (NAZARA_THREADSAFETY_MATRIX4 && (defined(NAZARA_MATRIX4) || defined(NAZARA_MATRIX4_CPP)))) + (NAZARA_THREADSAFETY_MATRIX3 && (defined(NAZARA_MATRIX3) || defined(NAZARA_MATRIX3_INL))) || \ + (NAZARA_THREADSAFETY_MATRIX4 && (defined(NAZARA_MATRIX4) || defined(NAZARA_MATRIX4_INL)))) #include #include diff --git a/src/Nazara/Core/Clock.cpp b/src/Nazara/Core/Clock.cpp index 0f1849f2c..816b5d69d 100644 --- a/src/Nazara/Core/Clock.cpp +++ b/src/Nazara/Core/Clock.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_CLOCK_CPP - #include #include @@ -15,6 +13,7 @@ #error OS not handled #endif +#define NAZARA_CLASS_CLOCK #include #include diff --git a/src/Nazara/Core/Directory.cpp b/src/Nazara/Core/Directory.cpp index 3736572c8..5e45db71b 100644 --- a/src/Nazara/Core/Directory.cpp +++ b/src/Nazara/Core/Directory.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_DIRECTORY_CPP - #include #include #include @@ -17,6 +15,7 @@ #error OS not handled #endif +#define NAZARA_CLASS_DIRECTORY #include #include diff --git a/src/Nazara/Core/DynLib.cpp b/src/Nazara/Core/DynLib.cpp index 9c48b8602..8eec92bf4 100644 --- a/src/Nazara/Core/DynLib.cpp +++ b/src/Nazara/Core/DynLib.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_DYNLIB_CPP - #include #include #include @@ -19,6 +17,8 @@ #include #include +#define NAZARA_DYNLIB_CPP + NzDynLib::NzDynLib(const NzString& libraryPath) : m_path(libraryPath), m_impl(nullptr) diff --git a/src/Nazara/Core/Error.cpp b/src/Nazara/Core/Error.cpp index 203cde3af..ad5c87091 100644 --- a/src/Nazara/Core/Error.cpp +++ b/src/Nazara/Core/Error.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_ERROR_CPP - #include #include #include diff --git a/src/Nazara/Core/File.cpp b/src/Nazara/Core/File.cpp index 5148e5d12..b2b8f96c2 100644 --- a/src/Nazara/Core/File.cpp +++ b/src/Nazara/Core/File.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_FILE_CPP - #include #include #include @@ -21,6 +19,7 @@ #error OS not handled #endif +#define NAZARA_CLASS_FILE #include #include diff --git a/src/Nazara/Core/HashDigest.cpp b/src/Nazara/Core/HashDigest.cpp index 6dbc4e267..438f303ff 100644 --- a/src/Nazara/Core/HashDigest.cpp +++ b/src/Nazara/Core/HashDigest.cpp @@ -2,14 +2,11 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_HASHDIGEST_CPP - #include #include #include #include #include -#include #include NzHashDigest::NzHashDigest() : diff --git a/src/Nazara/Core/Lock.cpp b/src/Nazara/Core/Lock.cpp index 67e4fd718..a48fe13a5 100644 --- a/src/Nazara/Core/Lock.cpp +++ b/src/Nazara/Core/Lock.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_LOCK_CPP - #include #include #include diff --git a/src/Nazara/Core/Log.cpp b/src/Nazara/Core/Log.cpp index b8166a0a2..746526d55 100644 --- a/src/Nazara/Core/Log.cpp +++ b/src/Nazara/Core/Log.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_LOG_CPP - #include #include #include @@ -14,6 +12,7 @@ #include #endif +#define NAZARA_CLASS_LOG #include #include diff --git a/src/Nazara/Core/Mutex.cpp b/src/Nazara/Core/Mutex.cpp index 5fa7b8955..18df21009 100644 --- a/src/Nazara/Core/Mutex.cpp +++ b/src/Nazara/Core/Mutex.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_MUTEX_CPP - #include #if defined(NAZARA_PLATFORM_WINDOWS) diff --git a/src/Nazara/Core/Semaphore.cpp b/src/Nazara/Core/Semaphore.cpp index bcb4ce424..809af5b8d 100644 --- a/src/Nazara/Core/Semaphore.cpp +++ b/src/Nazara/Core/Semaphore.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_SEMAPHORE_CPP - #include #if defined(NAZARA_PLATFORM_WINDOWS) diff --git a/src/Nazara/Core/String.cpp b/src/Nazara/Core/String.cpp index 0ce229ab1..740e323b2 100644 --- a/src/Nazara/Core/String.cpp +++ b/src/Nazara/Core/String.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_STRING_CPP - #include #include #include @@ -15,6 +13,8 @@ #include #include #include + +#define NAZARA_CLASS_STRING #include #include diff --git a/src/Nazara/Core/StringStream.cpp b/src/Nazara/Core/StringStream.cpp index b9947c74a..3581a83e7 100644 --- a/src/Nazara/Core/StringStream.cpp +++ b/src/Nazara/Core/StringStream.cpp @@ -2,11 +2,11 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_STRINGSTREAM_CPP - #include #include +#define NAZARA_STRINGSTREAM_CPP + NzStringStream::NzStringStream() : m_bufferSize(0) { diff --git a/src/Nazara/Core/Thread.cpp b/src/Nazara/Core/Thread.cpp index ee96542c8..81cdb2fa8 100644 --- a/src/Nazara/Core/Thread.cpp +++ b/src/Nazara/Core/Thread.cpp @@ -4,8 +4,6 @@ // Inspiré du code de la SFML par Laurent Gomila -#define NAZARA_THREAD_CPP - #include #include diff --git a/src/Nazara/Core/ThreadCondition.cpp b/src/Nazara/Core/ThreadCondition.cpp index 769d78d9e..fb8c3b7e8 100644 --- a/src/Nazara/Core/ThreadCondition.cpp +++ b/src/Nazara/Core/ThreadCondition.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_THREADCONDITION_CPP - #include #include diff --git a/src/Nazara/Core/Unicode.cpp b/src/Nazara/Core/Unicode.cpp index f47e56939..575ad65d1 100644 --- a/src/Nazara/Core/Unicode.cpp +++ b/src/Nazara/Core/Unicode.cpp @@ -2,8 +2,6 @@ // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp -#define NAZARA_UNICODE_CPP - #include #include