[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

@ -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