Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/protobuf/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs

Issue 1983203003: Update third_party/protobuf to protobuf-v3.0.0-beta-3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: owners Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #region Copyright notice and license 1 #region Copyright notice and license
2 // Protocol Buffers - Google's data interchange format 2 // Protocol Buffers - Google's data interchange format
3 // Copyright 2008 Google Inc. All rights reserved. 3 // Copyright 2008 Google Inc. All rights reserved.
4 // https://developers.google.com/protocol-buffers/ 4 // https://developers.google.com/protocol-buffers/
5 // 5 //
6 // Redistribution and use in source and binary forms, with or without 6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are 7 // modification, are permitted provided that the following conditions are
8 // met: 8 // met:
9 // 9 //
10 // * Redistributions of source code must retain the above copyright 10 // * Redistributions of source code must retain the above copyright
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 "google/protobuf/field_mask.proto", 53 "google/protobuf/field_mask.proto",
54 "google/protobuf/source_context.proto", 54 "google/protobuf/source_context.proto",
55 "google/protobuf/struct.proto", 55 "google/protobuf/struct.proto",
56 "google/protobuf/type.proto", 56 "google/protobuf/type.proto",
57 }; 57 };
58 58
59 private readonly IList<FieldDescriptor> fieldsInDeclarationOrder; 59 private readonly IList<FieldDescriptor> fieldsInDeclarationOrder;
60 private readonly IList<FieldDescriptor> fieldsInNumberOrder; 60 private readonly IList<FieldDescriptor> fieldsInNumberOrder;
61 private readonly IDictionary<string, FieldDescriptor> jsonFieldMap; 61 private readonly IDictionary<string, FieldDescriptor> jsonFieldMap;
62 62
63 internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, M essageDescriptor parent, int typeIndex, GeneratedCodeInfo generatedCodeInfo) 63 internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, M essageDescriptor parent, int typeIndex, GeneratedClrTypeInfo generatedCodeInfo)
64 : base(file, file.ComputeFullName(parent, proto.Name), typeIndex) 64 : base(file, file.ComputeFullName(parent, proto.Name), typeIndex)
65 { 65 {
66 Proto = proto; 66 Proto = proto;
67 Parser = generatedCodeInfo?.Parser; 67 Parser = generatedCodeInfo?.Parser;
68 ClrType = generatedCodeInfo?.ClrType; 68 ClrType = generatedCodeInfo?.ClrType;
69 ContainingType = parent; 69 ContainingType = parent;
70 70
71 // Note use of generatedCodeInfo. rather than generatedCodeInfo?. he re... we don't expect 71 // Note use of generatedCodeInfo. rather than generatedCodeInfo?. he re... we don't expect
72 // to see any nested oneofs, types or enums in "not actually generat ed" code... we do 72 // to see any nested oneofs, types or enums in "not actually generat ed" code... we do
73 // expect fields though (for map entry messages). 73 // expect fields though (for map entry messages).
(...skipping 11 matching lines...) Expand all
85 proto.EnumType, 85 proto.EnumType,
86 (type, index) => 86 (type, index) =>
87 new EnumDescriptor(type, file, this, index, generatedCodeInfo.Ne stedEnums[index])); 87 new EnumDescriptor(type, file, this, index, generatedCodeInfo.Ne stedEnums[index]));
88 88
89 fieldsInDeclarationOrder = DescriptorUtil.ConvertAndMakeReadOnly( 89 fieldsInDeclarationOrder = DescriptorUtil.ConvertAndMakeReadOnly(
90 proto.Field, 90 proto.Field,
91 (field, index) => 91 (field, index) =>
92 new FieldDescriptor(field, file, this, index, generatedCodeInfo? .PropertyNames[index])); 92 new FieldDescriptor(field, file, this, index, generatedCodeInfo? .PropertyNames[index]));
93 fieldsInNumberOrder = new ReadOnlyCollection<FieldDescriptor>(fields InDeclarationOrder.OrderBy(field => field.FieldNumber).ToArray()); 93 fieldsInNumberOrder = new ReadOnlyCollection<FieldDescriptor>(fields InDeclarationOrder.OrderBy(field => field.FieldNumber).ToArray());
94 // TODO: Use field => field.Proto.JsonName when we're confident it's appropriate. (And then use it in the formatter, too.) 94 // TODO: Use field => field.Proto.JsonName when we're confident it's appropriate. (And then use it in the formatter, too.)
95 jsonFieldMap = new ReadOnlyDictionary<string, FieldDescriptor>(field sInNumberOrder.ToDictionary(field => JsonFormatter.ToCamelCase(field.Name))); 95 jsonFieldMap = CreateJsonFieldMap(fieldsInNumberOrder);
96 file.DescriptorPool.AddSymbol(this); 96 file.DescriptorPool.AddSymbol(this);
97 Fields = new FieldCollection(this); 97 Fields = new FieldCollection(this);
98 } 98 }
99 99
100 private static ReadOnlyDictionary<string, FieldDescriptor> CreateJsonFie ldMap(IList<FieldDescriptor> fields)
101 {
102 var map = new Dictionary<string, FieldDescriptor>();
103 foreach (var field in fields)
104 {
105 map[field.Name] = field;
106 map[field.JsonName] = field;
107 }
108 return new ReadOnlyDictionary<string, FieldDescriptor>(map);
109 }
110
100 /// <summary> 111 /// <summary>
101 /// The brief name of the descriptor's target. 112 /// The brief name of the descriptor's target.
102 /// </summary> 113 /// </summary>
103 public override string Name => Proto.Name; 114 public override string Name => Proto.Name;
104 115
105 internal DescriptorProto Proto { get; } 116 internal DescriptorProto Proto { get; }
106 117
107 /// <summary> 118 /// <summary>
108 /// The CLR type used to represent message instances from this descripto r. 119 /// The CLR type used to represent message instances from this descripto r.
109 /// </summary> 120 /// </summary>
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 /// Returns the fields in the message as an immutable list, in ascen ding field number 259 /// Returns the fields in the message as an immutable list, in ascen ding field number
249 /// order. Field numbers need not be contiguous, so there is no dire ct mapping from the 260 /// order. Field numbers need not be contiguous, so there is no dire ct mapping from the
250 /// index in the list to the field number; to retrieve a field by fi eld number, it is better 261 /// index in the list to the field number; to retrieve a field by fi eld number, it is better
251 /// to use the <see cref="FieldCollection"/> indexer. 262 /// to use the <see cref="FieldCollection"/> indexer.
252 /// </value> 263 /// </value>
253 public IList<FieldDescriptor> InFieldNumberOrder() => messageDescrip tor.fieldsInNumberOrder; 264 public IList<FieldDescriptor> InFieldNumberOrder() => messageDescrip tor.fieldsInNumberOrder;
254 265
255 // TODO: consider making this public in the future. (Being conservat ive for now...) 266 // TODO: consider making this public in the future. (Being conservat ive for now...)
256 267
257 /// <value> 268 /// <value>
258 /// Returns a read-only dictionary mapping the field names in this m essage as they're used 269 /// Returns a read-only dictionary mapping the field names in this m essage as they're available
259 /// in the JSON representation to the field descriptors. For example , a field <c>foo_bar</c> 270 /// in the JSON representation to the field descriptors. For example , a field <c>foo_bar</c>
260 /// in the message would result in an entry with a key <c>fooBar</c> . 271 /// in the message would result two entries, one with a key <c>fooBa r</c> and one with a key
272 /// <c>foo_bar</c>, both referring to the same field.
261 /// </value> 273 /// </value>
262 internal IDictionary<string, FieldDescriptor> ByJsonName() => messag eDescriptor.jsonFieldMap; 274 internal IDictionary<string, FieldDescriptor> ByJsonName() => messag eDescriptor.jsonFieldMap;
263 275
264 /// <summary> 276 /// <summary>
265 /// Retrieves the descriptor for the field with the given number. 277 /// Retrieves the descriptor for the field with the given number.
266 /// </summary> 278 /// </summary>
267 /// <param name="number">Number of the field to retrieve the descrip tor for</param> 279 /// <param name="number">Number of the field to retrieve the descrip tor for</param>
268 /// <returns>The accessor for the given field</returns> 280 /// <returns>The accessor for the given field</returns>
269 /// <exception cref="KeyNotFoundException">The message descriptor do es not contain a field 281 /// <exception cref="KeyNotFoundException">The message descriptor do es not contain a field
270 /// with the given number</exception> 282 /// with the given number</exception>
(...skipping 25 matching lines...) Expand all
296 if (fieldDescriptor == null) 308 if (fieldDescriptor == null)
297 { 309 {
298 throw new KeyNotFoundException("No such field name"); 310 throw new KeyNotFoundException("No such field name");
299 } 311 }
300 return fieldDescriptor; 312 return fieldDescriptor;
301 } 313 }
302 } 314 }
303 } 315 }
304 } 316 }
305 } 317 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698