[Sync] Project Sync plus Revision changes

The main revision system changes are based on FoeReapers work in:
b37de3b83e
This commit is contained in:
Antz 2016-03-24 17:58:53 +00:00 committed by Antz
parent f5e2d53ccc
commit bf4b6fafc5
39 changed files with 684 additions and 416 deletions

View file

@ -169,6 +169,7 @@ typedef uint32 DWORD;
#define CONCAT1(x, y) x##y
#define STATIC_ASSERT_WORKAROUND(expr, msg) typedef char CONCAT(static_assert_failed_at_line_, __LINE__) [(expr) ? 1 : -1]
#ifndef COMPILER_HAS_CPP11_SUPPORT
#if COMPILER == COMPILER_GNU
# if !defined(__GXX_EXPERIMENTAL_CXX0X__) || (__GNUC__ < 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ < 7)
# define override
@ -184,6 +185,7 @@ typedef uint32 DWORD;
# define static_assert(a, b) STATIC_ASSERT_WORKAROUND(a, b)
# endif
#endif
#endif
/**
* @brief

View file

@ -35,7 +35,7 @@ namespace MaNGOS
* @brief OperatorNew policy creates an object on the heap using new.
*
*/
class OperatorNew
class OperatorNew
{
public:
@ -65,7 +65,7 @@ namespace MaNGOS
* @brief LocalStaticCreation policy creates an object on the stack the first time call Create.
*
*/
class LocalStaticCreation
class LocalStaticCreation
{
/**
* @brief
@ -123,7 +123,7 @@ namespace MaNGOS
* @brief
*
*/
class CreateUsingMalloc
class CreateUsingMalloc
{
public:
@ -159,7 +159,7 @@ namespace MaNGOS
* @brief CreateOnCallBack creates the object base on the call back.
*
*/
class CreateOnCallBack
class CreateOnCallBack
{
public:
/**

View file

@ -48,7 +48,7 @@ namespace MaNGOS
* @brief
*
*/
class ObjectLifeTime
class ObjectLifeTime
{
public:

View file

@ -46,7 +46,7 @@ namespace MaNGOS
* @brief
*
*/
class Singleton
class Singleton
{
public:
@ -147,15 +147,15 @@ namespace MaNGOS
}
#define INSTANTIATE_SINGLETON_1(TYPE) \
template class MaNGOS::Singleton<TYPE, MaNGOS::SingleThreaded<TYPE>, MaNGOS::OperatorNew<TYPE>, MaNGOS::ObjectLifeTime<TYPE> >;
template class MaNGOS::Singleton<TYPE, MaNGOS::SingleThreaded<TYPE>, MaNGOS::OperatorNew<TYPE>, MaNGOS::ObjectLifeTime<TYPE> >;
#define INSTANTIATE_SINGLETON_2(TYPE, THREADINGMODEL) \
template class MaNGOS::Singleton<TYPE, THREADINGMODEL, MaNGOS::OperatorNew<TYPE>, MaNGOS::ObjectLifeTime<TYPE> >;
template class MaNGOS::Singleton<TYPE, THREADINGMODEL, MaNGOS::OperatorNew<TYPE>, MaNGOS::ObjectLifeTime<TYPE> >;
#define INSTANTIATE_SINGLETON_3(TYPE, THREADINGMODEL, CREATIONPOLICY ) \
template class MaNGOS::Singleton<TYPE, THREADINGMODEL, CREATIONPOLICY, MaNGOS::ObjectLifeTime<TYPE> >;
template class MaNGOS::Singleton<TYPE, THREADINGMODEL, CREATIONPOLICY, MaNGOS::ObjectLifeTime<TYPE> >;
#define INSTANTIATE_SINGLETON_4(TYPE, THREADINGMODEL, CREATIONPOLICY, OBJECTLIFETIME) \
template class MaNGOS::Singleton<TYPE, THREADINGMODEL, CREATIONPOLICY, OBJECTLIFETIME >;
template class MaNGOS::Singleton<TYPE, THREADINGMODEL, CREATIONPOLICY, OBJECTLIFETIME >;
#endif

View file

@ -39,7 +39,7 @@ namespace MaNGOS
* @brief
*
*/
class GeneralLock
class GeneralLock
{
public:
@ -86,7 +86,7 @@ namespace MaNGOS
* @brief
*
*/
class SingleThreaded
class SingleThreaded
{
public:
@ -128,7 +128,7 @@ namespace MaNGOS
* @brief
*
*/
class ObjectLevelLockable
class ObjectLevelLockable
{
public:
@ -193,7 +193,7 @@ namespace MaNGOS
* @brief
*
*/
class ClassLevelLockable
class ClassLevelLockable
{
public:
@ -265,6 +265,6 @@ namespace MaNGOS
template<class T, class MUTEX> MUTEX MaNGOS::ClassLevelLockable<T, MUTEX>::si_mtx; /**< TODO */
#define INSTANTIATE_CLASS_MUTEX(CTYPE, MUTEX) \
template class MaNGOS::ClassLevelLockable<CTYPE, MUTEX>
template class MaNGOS::ClassLevelLockable<CTYPE, MUTEX>
#endif

View file

@ -28,9 +28,18 @@
#include "Platform/CompilerDefs.h"
#include "Platform/Define.h"
#if defined(__APPLE__)
#include <AvailabilityMacros.h>
#endif
#if COMPILER == COMPILER_CLANG
# include <tr1/unordered_map>
# include <tr1/unordered_set>
# if defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
# include <unordered_map>
# include <unordered_set>
# else
# include <tr1/unordered_map>
# include <tr1/unordered_set>
# endif
#elif COMPILER == COMPILER_INTEL
# include <ext/hash_map>
# include <ext/hash_set>
@ -97,20 +106,40 @@ HASH_NAMESPACE_END
using std::hash_map;
using std::hash_set;
#elif COMPILER == COMPILER_CLANG && defined(__FreeBSD__)
# include <osreldate.h>
# define UNORDERED_MAP std::unordered_map
# define UNORDERED_SET std::unordered_set
# define HASH_NAMESPACE_START namespace std { namespace __1 {
# define HASH_NAMESPACE_END } }
# if __FreeBSD_version >= 1001000
# define HASH_NAMESPACE_START namespace std {
# define HASH_NAMESPACE_END }
# else
# define HASH_NAMESPACE_START namespace std { namespace __1 {
# define HASH_NAMESPACE_END } }
# endif
#elif COMPILER == COMPILER_CLANG
# define UNORDERED_MAP std::tr1::unordered_map
# define UNORDERED_SET std::tr1::unordered_set
# define HASH_NAMESPACE_START namespace std { namespace tr1 {
# define HASH_NAMESPACE_END } }
# if defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
# define UNORDERED_MAP std::unordered_map
# define UNORDERED_SET std::unordered_set
# define HASH_NAMESPACE_START namespace std {
# define HASH_NAMESPACE_END }
# else
# define UNORDERED_MAP std::tr1::unordered_map
# define UNORDERED_SET std::tr1::unordered_set
# define HASH_NAMESPACE_START namespace std { namespace tr1 {
# define HASH_NAMESPACE_END } }
# endif
#elif COMPILER == COMPILER_GNU && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 3)
# define UNORDERED_MAP std::tr1::unordered_map
# define UNORDERED_SET std::tr1::unordered_set
# define HASH_NAMESPACE_START namespace std { namespace tr1 {
# define HASH_NAMESPACE_END } }
# if defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
# define UNORDERED_MAP std::unordered_map
# define UNORDERED_SET std::unordered_set
# define HASH_NAMESPACE_START namespace std {
# define HASH_NAMESPACE_END }
# else
# define UNORDERED_MAP std::tr1::unordered_map
# define UNORDERED_SET std::tr1::unordered_set
# define HASH_NAMESPACE_START namespace std { namespace tr1 {
# define HASH_NAMESPACE_END } }
# endif
#elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 && (__GNUC__ < 4 || __GNUC__ == 4 && __GNUC_MINOR__ < 3)
# define UNORDERED_MAP __gnu_cxx::hash_map
# define UNORDERED_SET __gnu_cxx::hash_set