diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2015-08-25 20:24:43 -0700 |
---|---|---|
committer | Feng Xiao <xfxyjwf@gmail.com> | 2015-08-25 20:24:43 -0700 |
commit | b192ba87f72b5e3e8add09bbcbb7623831e3079b (patch) | |
tree | affb3beff3c33050e7f93647ddab8606899ff03d /src/google | |
parent | 5da0b46811a103bd1a953f496d4bcd5ff45d3736 (diff) | |
parent | cf94f7b74495d08b833056016e045a0ae3fb64fa (diff) | |
download | protobuf-b192ba87f72b5e3e8add09bbcbb7623831e3079b.tar.gz protobuf-b192ba87f72b5e3e8add09bbcbb7623831e3079b.tar.bz2 protobuf-b192ba87f72b5e3e8add09bbcbb7623831e3079b.zip |
Merge remote-tracking branch 'origin/master' into beta-1
Diffstat (limited to 'src/google')
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_helpers.cc | 6 | ||||
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_helpers.h | 7 | ||||
-rw-r--r-- | src/google/protobuf/compiler/python/python_generator.cc | 20 | ||||
-rw-r--r-- | src/google/protobuf/message.cc | 5 | ||||
-rw-r--r-- | src/google/protobuf/stubs/port.h | 3 |
5 files changed, 21 insertions, 20 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.cc b/src/google/protobuf/compiler/csharp/csharp_helpers.cc index d25dcba9..333b4912 100644 --- a/src/google/protobuf/compiler/csharp/csharp_helpers.cc +++ b/src/google/protobuf/compiler/csharp/csharp_helpers.cc @@ -118,6 +118,12 @@ std::string GetFileNamespace(const FileDescriptor* descriptor) { } std::string GetUmbrellaClassUnqualifiedName(const FileDescriptor* descriptor) { + // We manually rename Descriptor to DescriptorProtoFile to avoid collisions with + // the static Descriptor property. It would be nice to be able to do this with an + // option, but it would be rarely used. + if (IsDescriptorProto(descriptor)) { + return "DescriptorProtoFile"; + } // umbrella_classname can no longer be set using message option. std::string proto_file = descriptor->name(); int lastslash = proto_file.find_last_of("/"); diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.h b/src/google/protobuf/compiler/csharp/csharp_helpers.h index 278e05f3..4ed17a84 100644 --- a/src/google/protobuf/compiler/csharp/csharp_helpers.h +++ b/src/google/protobuf/compiler/csharp/csharp_helpers.h @@ -115,12 +115,7 @@ inline bool IsMapEntryMessage(const Descriptor* descriptor) { // for use in the runtime. This is the only type which is allowed to use proto2 syntax, // and it generates internal classes. inline bool IsDescriptorProto(const FileDescriptor* descriptor) { - // TODO: Do this better! (Currently this depends on a hack in generate_protos.sh to rename - // the file...) - // We need to be able to detect the "normal" name as well, for times that we're just - // depending on descriptor.proto instead of generating it. - return descriptor->name() == "google/protobuf/descriptor_proto_file.proto" - || descriptor->name() == "google/protobuf/descriptor.proto"; + return descriptor->name() == "google/protobuf/descriptor.proto"; } inline bool IsWrapperType(const FieldDescriptor* descriptor) { diff --git a/src/google/protobuf/compiler/python/python_generator.cc b/src/google/protobuf/compiler/python/python_generator.cc index 4d500f90..e81af700 100644 --- a/src/google/protobuf/compiler/python/python_generator.cc +++ b/src/google/protobuf/compiler/python/python_generator.cc @@ -28,7 +28,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -//#PY25 compatible generated code for GAE. // Copyright 2007 Google Inc. All Rights Reserved. // Author: robinson@google.com (Will Robinson) // @@ -167,7 +166,6 @@ void PrintTopBoilerplate( printer->Print( "# Generated by the protocol buffer compiler. DO NOT EDIT!\n" "# source: $filename$\n" - "\nimport sys\n_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))" //##PY25 "\n", "filename", file->name()); if (HasTopLevelEnums(file)) { @@ -259,12 +257,9 @@ string StringifyDefaultValue(const FieldDescriptor& field) { case FieldDescriptor::CPPTYPE_ENUM: return SimpleItoa(field.default_value_enum()->number()); case FieldDescriptor::CPPTYPE_STRING: -//##!PY25 return "b\"" + CEscape(field.default_value_string()) + -//##!PY25 (field.type() != FieldDescriptor::TYPE_STRING ? "\"" : -//##!PY25 "\".decode('utf-8')"); - return "_b(\"" + CEscape(field.default_value_string()) + //##PY25 - (field.type() != FieldDescriptor::TYPE_STRING ? "\")" : //##PY25 - "\").decode('utf-8')"); //##PY25 + return "b\"" + CEscape(field.default_value_string()) + + (field.type() != FieldDescriptor::TYPE_STRING ? "\"" : + "\".decode('utf-8')"); case FieldDescriptor::CPPTYPE_MESSAGE: return "None"; } @@ -390,8 +385,7 @@ void Generator::PrintFileDescriptor() const { printer_->Print(m, file_descriptor_template); printer_->Indent(); printer_->Print( -//##!PY25 "serialized_pb=b'$value$'\n", - "serialized_pb=_b('$value$')\n", //##PY25 + "serialized_pb=b'$value$'\n", "value", strings::CHexEscape(file_descriptor_serialized_)); if (file_->dependency_count() != 0) { printer_->Print(",\ndependencies=["); @@ -1035,10 +1029,8 @@ string Generator::OptionsValue( return "None"; } else { string full_class_name = "descriptor_pb2." + class_name; -//##!PY25 return "_descriptor._ParseOptions(" + full_class_name + "(), b'" -//##!PY25 + CEscape(serialized_options)+ "')"; - return "_descriptor._ParseOptions(" + full_class_name + "(), _b('" //##PY25 - + CEscape(serialized_options)+ "'))"; //##PY25 + return "_descriptor._ParseOptions(" + full_class_name + "(), b'" + + CEscape(serialized_options)+ "')"; } } diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc index 7d69c57a..2f6416d0 100644 --- a/src/google/protobuf/message.cc +++ b/src/google/protobuf/message.cc @@ -55,6 +55,7 @@ #include <google/protobuf/stubs/map_util.h> #include <google/protobuf/stubs/singleton.h> #include <google/protobuf/stubs/stl_util.h> +#include <google/protobuf/stubs/port.h> namespace google { namespace protobuf { @@ -485,6 +486,10 @@ struct ShutdownRepeatedFieldRegister { namespace internal { template<> +#if defined(_MSC_VER) && (_MSC_VER >= 1900) +// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 +GOOGLE_ATTRIBUTE_NOINLINE +#endif Message* GenericTypeHandler<Message>::NewFromPrototype( const Message* prototype, google::protobuf::Arena* arena) { return prototype->New(arena); diff --git a/src/google/protobuf/stubs/port.h b/src/google/protobuf/stubs/port.h index 5ba04c72..5158a6f9 100644 --- a/src/google/protobuf/stubs/port.h +++ b/src/google/protobuf/stubs/port.h @@ -153,6 +153,9 @@ static const uint64 kuint64max = GOOGLE_ULONGLONG(0xFFFFFFFFFFFFFFFF); // For functions we want to force not inline. // Introduced in gcc 3.1. #define GOOGLE_ATTRIBUTE_NOINLINE __attribute__ ((noinline)) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) +// Seems to have been around since at least Visual Studio 2005 +#define GOOGLE_ATTRIBUTE_NOINLINE __declspec(noinline) #else // Other compilers will have to figure it out for themselves. #define GOOGLE_ATTRIBUTE_NOINLINE |