diff options
author | Jisi Liu <jisi.liu@gmail.com> | 2015-03-01 21:02:22 -0800 |
---|---|---|
committer | Jisi Liu <jisi.liu@gmail.com> | 2015-03-01 21:02:22 -0800 |
commit | 4065a31644cf44fd84cc30491a61c4e59d0f2e2a (patch) | |
tree | 5f22d65035814665cc61cd1cd7b982356cfaa22d /vsprojects | |
parent | 14fe0c99bb226e111f6a3ddf0b70d911505871ff (diff) | |
download | protobuf-4065a31644cf44fd84cc30491a61c4e59d0f2e2a.tar.gz protobuf-4065a31644cf44fd84cc30491a61c4e59d0f2e2a.tar.bz2 protobuf-4065a31644cf44fd84cc30491a61c4e59d0f2e2a.zip |
Fix hash.h for MSVC and platforms without hash map/set support.
Change-Id: Ic0fdb52c17b9495c73b8ce15879531383a148585
Diffstat (limited to 'vsprojects')
-rwxr-xr-x[-rw-r--r--] | vsprojects/config.h | 29 | ||||
-rwxr-xr-x[-rw-r--r--] | vsprojects/google/protobuf/stubs/pbconfig.h | 30 |
2 files changed, 30 insertions, 29 deletions
diff --git a/vsprojects/config.h b/vsprojects/config.h index 2c64450a..a93bb033 100644..100755 --- a/vsprojects/config.h +++ b/vsprojects/config.h @@ -1,28 +1,19 @@ /* protobuf config.h for MSVC. On other platforms, this is generated * automatically by autoheader / autoconf / configure. */ -/* the location of <hash_map> */ -#define HASH_MAP_H <hash_map> +#include <google/protobuf/stubs/pbconfig.h> -/* the namespace of hash_map/hash_set */ -// Apparently Microsoft decided to move hash_map *back* to the std namespace -// in MSVC 2010: -// http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx -// TODO(kenton): Use unordered_map instead, which is available in MSVC 2010. -#if _MSC_VER < 1310 || _MSC_VER >= 1600 -#define HASH_NAMESPACE std -#else -#define HASH_NAMESPACE stdext -#endif - -/* the location of <hash_set> */ -#define HASH_SET_H <hash_set> +#define HASH_MAP_H GOOGLE_PROTOBUF_HASH_MAP_H +#define HASH_NAMESPACE GOOGLE_PROTOBUF_HASH_NAMESPACE +#define HASH_SET_H GOOGLE_PROTOBUF_HASH_SET_H -/* define if the compiler has hash_map */ -#define HAVE_HASH_MAP 1 +#ifdef GOOGLE_PROTOBUF_HAVE_HASH_MAP +#define HAVE_HASH_MAP GOOGLE_PROTOBUF_HAVE_HASH_MAP +#endif -/* define if the compiler has hash_set */ -#define HAVE_HASH_SET 1 +#ifdef GOOGLE_PROTOBUF_HAVE_HASH_SET +#define HAVE_HASH_SET GOOGLE_PROTOBUF_HAVE_HASH_SET +#endif /* define if you want to use zlib. See readme.txt for additional * requirements. */ diff --git a/vsprojects/google/protobuf/stubs/pbconfig.h b/vsprojects/google/protobuf/stubs/pbconfig.h index c49d26b0..18250a22 100644..100755 --- a/vsprojects/google/protobuf/stubs/pbconfig.h +++ b/vsprojects/google/protobuf/stubs/pbconfig.h @@ -1,29 +1,39 @@ /* protobuf config.h for MSVC. On other platforms, this is generated * automatically by autoheader / autoconf / configure. */ -/* the location of <hash_map> */ -#define GOOGLE_PROTOBUF_HASH_MAP_H <hash_map> +// NOTE: if you add new macros in this file manually, please propagate the macro +// to vsprojects/config.h. /* the namespace of hash_map/hash_set */ // Apparently Microsoft decided to move hash_map *back* to the std namespace // in MSVC 2010: // http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx -// TODO(kenton): Use unordered_map instead, which is available in MSVC 2010. -#if _MSC_VER < 1310 || _MSC_VER >= 1600 +// And.. they are moved back to stdext in MSVC 2013 (haven't checked 2012). That +// said, use unordered_map for MSVC 2010 and beyond is our safest bet. +#if _MSC_VER >= 1600 #define GOOGLE_PROTOBUF_HASH_NAMESPACE std -#else +#define GOOGLE_PROTOBUF_HASH_MAP_H <unordered_map> +#define GOOGLE_PROTOBUF_HASH_MAP_CLASS unordered_map +#define GOOGLE_PROTOBUF_HASH_SET_H <unordered_set> +#define GOOGLE_PROTOBUF_HASH_SET_CLASS unordered_set +#elif _MSC_VER >= 1310 #define GOOGLE_PROTOBUF_HASH_NAMESPACE stdext +#define GOOGLE_PROTOBUF_HASH_MAP_H <hash_map> +#define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map +#define GOOGLE_PROTOBUF_HASH_SET_H <hash_set> +#define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set +#else +#define GOOGLE_PROTOBUF_HASH_NAMESPACE std +#define GOOGLE_PROTOBUF_HASH_MAP_H <hash_map> +#define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map +#define GOOGLE_PROTOBUF_HASH_SET_H <hash_set> +#define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set #endif /* the location of <hash_set> */ -#define GOOGLE_PROTOBUF_HASH_SET_H <hash_set> /* define if the compiler has hash_map */ #define GOOGLE_PROTOBUF_HAVE_HASH_MAP 1 /* define if the compiler has hash_set */ #define GOOGLE_PROTOBUF_HAVE_HASH_SET 1 - -/* define if you want to use zlib. See readme.txt for additional - * requirements. */ -// #define HAVE_ZLIB 1 |