aboutsummaryrefslogtreecommitdiff
path: root/vsprojects
diff options
context:
space:
mode:
authorJisi Liu <jisi.liu@gmail.com>2015-03-01 21:02:22 -0800
committerJisi Liu <jisi.liu@gmail.com>2015-03-01 21:02:22 -0800
commit4065a31644cf44fd84cc30491a61c4e59d0f2e2a (patch)
tree5f22d65035814665cc61cd1cd7b982356cfaa22d /vsprojects
parent14fe0c99bb226e111f6a3ddf0b70d911505871ff (diff)
downloadprotobuf-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.h29
-rwxr-xr-x[-rw-r--r--]vsprojects/google/protobuf/stubs/pbconfig.h30
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