소스 검색

Fixes on visual studio 2008

unknown 10 년 전
부모
커밋
ca1c252923

+ 0 - 2
src/google/protobuf/arena_unittest.cc

@@ -30,8 +30,6 @@
 
 #include <google/protobuf/arena.h>
 
-#include <stdint.h>
-
 #include <algorithm>
 #include <cstring>
 #include <memory>

+ 3 - 3
src/google/protobuf/compiler/objectivec/objectivec_field.cc

@@ -256,7 +256,7 @@ void FieldGenerator::GenerateFieldDescription(
   // "  .typeSpecific.value* = [something],"
   GenerateFieldDescriptionTypeSpecific(printer);
 
-  const string& field_options(variables_.at("fieldoptions"));
+  const string& field_options(variables_.find("fieldoptions")->second);
   if (field_options.empty()) {
     printer->Print("  .fieldOptions = NULL,\n");
   } else {
@@ -379,7 +379,7 @@ void ObjCObjFieldGenerator::GeneratePropertyDeclaration(
   printer->Print(
       variables_,
       "@property(nonatomic, readwrite, $property_storage_attribute$) $property_type$ *$name$$storage_attribute$;\n");
-  if (IsInitName(variables_.at("name"))) {
+  if (IsInitName(variables_.find("name")->second)) {
     // If property name starts with init we need to annotate it to get past ARC.
     // http://stackoverflow.com/questions/18723226/how-do-i-annotate-an-objective-c-property-with-an-objc-method-family/18723227#18723227
     printer->Print(variables_,
@@ -426,7 +426,7 @@ void RepeatedFieldGenerator::GeneratePropertyDeclaration(
       "$comments$"
       "$array_comment$"
       "@property(nonatomic, readwrite, strong) $array_storage_type$ *$name$$storage_attribute$;\n");
-  if (IsInitName(variables_.at("name"))) {
+  if (IsInitName(variables_.find("name")->second)) {
     // If property name starts with init we need to annotate it to get past ARC.
     // http://stackoverflow.com/questions/18723226/how-do-i-annotate-an-objective-c-property-with-an-objc-method-family/18723227#18723227
     printer->Print(variables_,

+ 1 - 1
src/google/protobuf/lite_unittest.cc

@@ -700,7 +700,7 @@ int main(int argc, char* argv[]) {
     // Allocate a large initial block to avoid mallocs during hooked test.
     std::vector<char> arena_block(128 * 1024);
     google::protobuf::ArenaOptions options;
-    options.initial_block = arena_block.data();
+    options.initial_block = &arena_block[0];
     options.initial_block_size = arena_block.size();
     google::protobuf::Arena arena(options);
     string data;

+ 6 - 0
src/google/protobuf/map.h

@@ -33,6 +33,7 @@
 
 #include <iterator>
 #include <google/protobuf/stubs/hash.h>
+#include <limits>  // To support Visual Studio 2008
 
 #include <google/protobuf/arena.h>
 #include <google/protobuf/generated_enum_util.h>
@@ -200,6 +201,11 @@ class Map {
       return arena_ != other.arena_;
     }
 
+	// To support Visual Studio 2008
+	size_type max_size() const {
+		return std::numeric_limits<size_type>::max();
+	}
+
    private:
     Arena* arena_;
 

+ 1 - 1
src/google/protobuf/map_field_test.cc

@@ -145,7 +145,7 @@ TEST_F(MapFieldBasePrimitiveTest, Arena) {
   // Allocate a large initial block to avoid mallocs during hooked test.
   std::vector<char> arena_block(128 * 1024);
   ArenaOptions options;
-  options.initial_block = arena_block.data();
+  options.initial_block = &arena_block[0];
   options.initial_block_size = arena_block.size();
   Arena arena(options);
 

+ 1 - 1
src/google/protobuf/map_test.cc

@@ -2285,7 +2285,7 @@ TEST(ArenaTest, ParsingAndSerializingNoHeapAllocation) {
   // Allocate a large initial block to avoid mallocs during hooked test.
   std::vector<char> arena_block(128 * 1024);
   ArenaOptions options;
-  options.initial_block = arena_block.data();
+  options.initial_block = &arena_block[0];
   options.initial_block_size = arena_block.size();
   Arena arena(options);
   string data;

+ 2 - 3
src/google/protobuf/stubs/hash.h

@@ -112,7 +112,7 @@ class hash_set : public std::set<Key, HashFcn> {
 #elif defined(_MSC_VER) && !defined(_STLPORT_VERSION)
 
 template <typename Key>
-struct hash : public GOOGLE_PROTOBUF_HASH_NAMESPACE::hash_compare<Key> {
+struct hash : public GOOGLE_PROTOBUF_HASH_COMPARE<Key> {
 };
 
 // MSVC's hash_compare<const char*> hashes based on the string contents but
@@ -126,8 +126,7 @@ class CstringLess {
 
 template <>
 struct hash<const char*>
-    : public GOOGLE_PROTOBUF_HASH_NAMESPACE::hash_compare<
-        const char*, CstringLess> {};
+    : public GOOGLE_PROTOBUF_HASH_COMPARE<const char*, CstringLess> {};
 
 template <typename Key, typename Data,
           typename HashFcn = hash<Key>,

+ 11 - 1
vsprojects/google/protobuf/stubs/pbconfig.h

@@ -10,24 +10,34 @@
 //   http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx
 // 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
+#if _MSC_VER >= 1600  // Since Visual Studio 2010
 #define GOOGLE_PROTOBUF_HASH_NAMESPACE std
 #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
+#define GOOGLE_PROTOBUF_HASH_COMPARE std::hash_compare
+#elif _MSC_VER >= 1500  // Since Visual Studio 2008
+#define GOOGLE_PROTOBUF_HASH_NAMESPACE std::tr1
+#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
+#define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
 #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
+#define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
 #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
+#define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
 #endif
 
 /* the location of <hash_set> */