| Index: third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
|
| diff --git a/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc b/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
|
| index a970dc120f703d3457634142fa39021be34493be..1f3781a4b48fc68ed4e9566a90798a33c06c8ea9 100644
|
| --- a/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
|
| +++ b/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
|
| @@ -85,7 +85,7 @@ const google::protobuf::EnumValue* FindEnumValueByNumber(
|
| const google::protobuf::Enum& tech_enum, int number);
|
|
|
| // Utility function to format nanos.
|
| -const string FormatNanos(uint32 nanos, bool with_trailing_zeros);
|
| +const string FormatNanos(uint32 nanos);
|
|
|
| StatusOr<string> MapKeyDefaultValueAsString(
|
| const google::protobuf::Field& field) {
|
| @@ -121,9 +121,7 @@ ProtoStreamObjectSource::ProtoStreamObjectSource(
|
| type_(type),
|
| use_lower_camel_for_enums_(false),
|
| recursion_depth_(0),
|
| - max_recursion_depth_(kDefaultMaxRecursionDepth),
|
| - render_unknown_fields_(false),
|
| - add_trailing_zeros_for_timestamp_and_duration_(false) {
|
| + max_recursion_depth_(kDefaultMaxRecursionDepth) {
|
| GOOGLE_LOG_IF(DFATAL, stream == NULL) << "Input stream is NULL.";
|
| }
|
|
|
| @@ -136,9 +134,7 @@ ProtoStreamObjectSource::ProtoStreamObjectSource(
|
| type_(type),
|
| use_lower_camel_for_enums_(false),
|
| recursion_depth_(0),
|
| - max_recursion_depth_(kDefaultMaxRecursionDepth),
|
| - render_unknown_fields_(false),
|
| - add_trailing_zeros_for_timestamp_and_duration_(false) {
|
| + max_recursion_depth_(kDefaultMaxRecursionDepth) {
|
| GOOGLE_LOG_IF(DFATAL, stream == NULL) << "Input stream is NULL.";
|
| }
|
|
|
| @@ -188,7 +184,6 @@ Status ProtoStreamObjectSource::WriteMessage(const google::protobuf::Type& type,
|
| string field_name;
|
| // last_tag set to dummy value that is different from tag.
|
| uint32 tag = stream_->ReadTag(), last_tag = tag + 1;
|
| - google::protobuf::UnknownFieldSet unknown_fields;
|
|
|
| if (include_start_and_end) {
|
| ow->StartObject(name);
|
| @@ -204,8 +199,7 @@ Status ProtoStreamObjectSource::WriteMessage(const google::protobuf::Type& type,
|
| if (field == NULL) {
|
| // If we didn't find a field, skip this unknown tag.
|
| // TODO(wpoon): Check return boolean value.
|
| - WireFormat::SkipField(stream_, tag,
|
| - render_unknown_fields_ ? &unknown_fields : NULL);
|
| + WireFormat::SkipField(stream_, tag, NULL);
|
| tag = stream_->ReadTag();
|
| continue;
|
| }
|
| @@ -227,8 +221,6 @@ Status ProtoStreamObjectSource::WriteMessage(const google::protobuf::Type& type,
|
| tag = stream_->ReadTag();
|
| }
|
| }
|
| -
|
| -
|
| if (include_start_and_end) {
|
| ow->EndObject();
|
| }
|
| @@ -290,8 +282,6 @@ StatusOr<uint32> ProtoStreamObjectSource::RenderMap(
|
| return Status(util::error::INTERNAL, "Invalid map entry.");
|
| }
|
| ASSIGN_OR_RETURN(map_key, MapKeyDefaultValueAsString(*key_field));
|
| - // Key is empty, force it to render as empty (for string values).
|
| - ow->empty_name_ok_for_next_key();
|
| }
|
| RETURN_IF_ERROR(RenderField(field, map_key, ow));
|
| } else {
|
| @@ -320,7 +310,7 @@ Status ProtoStreamObjectSource::RenderPacked(
|
| Status ProtoStreamObjectSource::RenderTimestamp(
|
| const ProtoStreamObjectSource* os, const google::protobuf::Type& type,
|
| StringPiece field_name, ObjectWriter* ow) {
|
| - std::pair<int64, int32> p = os->ReadSecondsAndNanos(type);
|
| + pair<int64, int32> p = os->ReadSecondsAndNanos(type);
|
| int64 seconds = p.first;
|
| int32 nanos = p.second;
|
| if (seconds > kTimestampMaxSeconds || seconds < kTimestampMinSeconds) {
|
| @@ -344,7 +334,7 @@ Status ProtoStreamObjectSource::RenderTimestamp(
|
| Status ProtoStreamObjectSource::RenderDuration(
|
| const ProtoStreamObjectSource* os, const google::protobuf::Type& type,
|
| StringPiece field_name, ObjectWriter* ow) {
|
| - std::pair<int64, int32> p = os->ReadSecondsAndNanos(type);
|
| + pair<int64, int32> p = os->ReadSecondsAndNanos(type);
|
| int64 seconds = p.first;
|
| int32 nanos = p.second;
|
| if (seconds > kDurationMaxSeconds || seconds < kDurationMinSeconds) {
|
| @@ -374,10 +364,8 @@ Status ProtoStreamObjectSource::RenderDuration(
|
| sign = "-";
|
| nanos = -nanos;
|
| }
|
| - string formatted_duration = StringPrintf(
|
| - "%s%lld%ss", sign.c_str(), seconds,
|
| - FormatNanos(nanos, os->add_trailing_zeros_for_timestamp_and_duration_)
|
| - .c_str());
|
| + string formatted_duration = StringPrintf("%s%lld%ss", sign.c_str(), seconds,
|
| + FormatNanos(nanos).c_str());
|
| ow->RenderString(field_name, formatted_duration);
|
| return Status::OK;
|
| }
|
| @@ -863,8 +851,7 @@ Status ProtoStreamObjectSource::RenderNonMessageField(
|
| // up.
|
| const google::protobuf::Enum* en =
|
| typeinfo_->GetEnumByTypeUrl(field->type_url());
|
| - // Lookup the name of the enum, and render that. Unknown enum values
|
| - // are printed as integers.
|
| + // Lookup the name of the enum, and render that. Skips unknown enums.
|
| if (en != NULL) {
|
| const google::protobuf::EnumValue* enum_value =
|
| FindEnumValueByNumber(*en, buffer32);
|
| @@ -873,11 +860,9 @@ Status ProtoStreamObjectSource::RenderNonMessageField(
|
| ow->RenderString(field_name, ToCamelCase(enum_value->name()));
|
| else
|
| ow->RenderString(field_name, enum_value->name());
|
| - } else {
|
| - ow->RenderInt32(field_name, buffer32);
|
| }
|
| } else {
|
| - ow->RenderInt32(field_name, buffer32);
|
| + GOOGLE_LOG(INFO) << "Unknown enum skipped: " << field->type_url();
|
| }
|
| break;
|
| }
|
| @@ -1028,11 +1013,8 @@ bool ProtoStreamObjectSource::IsMap(
|
| // TODO(xiaofeng): Unify option names.
|
| return field.kind() == google::protobuf::Field_Kind_TYPE_MESSAGE &&
|
| (GetBoolOptionOrDefault(field_type->options(),
|
| - "google.protobuf.MessageOptions.map_entry",
|
| - false) ||
|
| - GetBoolOptionOrDefault(field_type->options(), "map_entry", false) ||
|
| - GetBoolOptionOrDefault(field_type->options(),
|
| - "proto2.MessageOptions.map_entry", false));
|
| + "google.protobuf.MessageOptions.map_entry", false) ||
|
| + GetBoolOptionOrDefault(field_type->options(), "map_entry", false));
|
| }
|
|
|
| std::pair<int64, int32> ProtoStreamObjectSource::ReadSecondsAndNanos(
|
| @@ -1110,11 +1092,7 @@ const google::protobuf::EnumValue* FindEnumValueByNumber(
|
|
|
| // TODO(skarvaje): Look into optimizing this by not doing computation on
|
| // double.
|
| -const string FormatNanos(uint32 nanos, bool with_trailing_zeros) {
|
| - if (nanos == 0) {
|
| - return with_trailing_zeros ? ".000" : "";
|
| - }
|
| -
|
| +const string FormatNanos(uint32 nanos) {
|
| const char* format =
|
| (nanos % 1000 != 0) ? "%.9f" : (nanos % 1000000 != 0) ? "%.6f" : "%.3f";
|
| string formatted =
|
| @@ -1128,4 +1106,3 @@ const string FormatNanos(uint32 nanos, bool with_trailing_zeros) {
|
| } // namespace util
|
| } // namespace protobuf
|
| } // namespace google
|
| -
|
|
|