mirror of
https://github.com/mangosfour/server.git
synced 2025-12-27 10:37:02 +00:00
[Sync] Project Sync plus Revision changes
The main revision system changes are based on FoeReapers work in:
b37de3b83e
This commit is contained in:
parent
f5e2d53ccc
commit
bf4b6fafc5
39 changed files with 684 additions and 416 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ namespace MaNGOS
|
|||
* @brief
|
||||
*
|
||||
*/
|
||||
class ObjectLifeTime
|
||||
class ObjectLifeTime
|
||||
{
|
||||
public:
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue