aboutsummaryrefslogtreecommitdiffhomepage
path: root/csharp/src/Google.Protobuf/Collections/MapField.cs
Commit message (Collapse)AuthorAge
* Compare floating point values bitwise in C#Gravatar Jon Skeet2017-12-09
| | | | | This is the manual code part of the Google.Protobuf library, and tests. Some tests will fail until codegen is changed and rerun.
* C#: Implement IReadOnlyDictionary<K,V> in MapField<K,V>Gravatar Jean-Rémy Bancel2017-07-12
|
* Fix CopyTo argument validationGravatar Jon Skeet2017-02-06
| | | | Fixes #2669.
* Implement RepeatedField.AddRange (#1733)Gravatar Jon Skeet2016-07-13
| | | | | | | | | | | | | | | | | | | * Improve exception throwing implementation in collections * Implement RepeatedField.AddRange. This fixes issue #1730. * Optimize AddRange for sequences implementing ICollection (Also fix a few more C# 6-isms.) * Remove the overload for Add(RepeatedField<T>) We now just perform the optimization within AddRange itself. This is a breaking change in terms of "drop in the DLL", but is source compatible, which should be fine.
* Remove ordering guarantees in the MapField documentationGravatar Jon Skeet2016-06-21
| | | | | | | | This doesn't currently change the ordering in the implementation, but allows us to do so in the future. We also need to change https://developers.google.com/protocol-buffers/docs/reference/csharp-generated#singular which states "Finally, unlike Dictionary<TKey, TValue>, MapField<TKey, TValue> preserves insertion order of entries." (We can just remove that sentence, I think.)
* Replace StringBuilder with TextWriter in JsonFormatterGravatar avgweb2016-03-06
|
* Rename Preconditions to ProtoPreconditionsGravatar Jon Skeet2016-02-04
| | | | (Generated code changes in next commit.)
* Prohibit null values in map fieldsGravatar Jon Skeet2016-01-11
| | | | | On deserialization, missing values for message types are replaced with a "default" message.
* Support ToString in RepeatedField and MapField.Gravatar Jon Skeet2015-10-01
| | | | | | This changes how we approach JSON formatting in general - instead of looking at the field a value came from, we just look at the type of the value. It's possible this *could* be slightly inefficient, but if we start caring about JSON performance deeply, we'll probably want to rewrite all of this anyway. It's definitely simpler this way. When we support dynamic messages, we'll need to modify JsonFormatter to handle enum values, as they won't come be "real" .NET enums at that point. It shouldn't be hard to do though.
* Fix parameter name in exception.Gravatar Jon Skeet2015-08-10
|
* Implement ICollection.CopyTo (using Array) for MapField views.Gravatar Jon Skeet2015-08-10
|
* Implement Keys and Values as viewsGravatar Jon Skeet2015-08-08
|
* Skip groups properly.Gravatar Jon Skeet2015-08-06
| | | | | | | | | | | Now the generated code doesn't need to check for end group tags, as it will skip whole groups at a time. Currently it will ignore extraneous end group tags, which may or may not be a good thing. Renamed ConsumeLastField to SkipLastField as it felt more natural. Removed WireFormat.IsEndGroupTag as it's no longer useful. This mostly fixes issue 688. (Generated code changes coming in next commit.)
* Change ReadTag and PeekTag to just use 0 as a return value for "end of ↵Gravatar Jon Skeet2015-08-05
| | | | | | | | stream", rather than using an awkward out parameter. This simplifies quite a lot of code. Generated code in next commit.
* Document everything, and turn on errors if we fail to document anything in ↵Gravatar Jon Skeet2015-08-04
| | | | the future.
* Rename ThrowHelper to Preconditions and make it public - we'll want to use ↵Gravatar Jon Skeet2015-07-30
| | | | | | | it from the generated code soon. Additionally, change it to return the value passed, and make it generic with a class constraint. A separate method doesn't have the class constraint, for more unusual scenarios.
* Minor bits of left-over frozenness.Gravatar Jon Skeet2015-07-30
|
* remove the freeze APIGravatar Jan Tattermusch2015-07-29
|
* First attempt at using profile 259 for Google.Protobuf.Gravatar Jon Skeet2015-07-27
| | | | | | | | This requires .NET 4.5, and there are a few compatibility changes required around reflection. Creating a PR from this to see how our CI systems handle it. Will want to add more documentation, validation and probably tests before merging. This is in aid of issue #590.
* Revamp to reflection.Gravatar Jon Skeet2015-07-21
| | | | | | | | | | | | | | | | | Changes in brief: 1. Descriptor is now the entry point for all reflection. 2. IReflectedMessage has gone; there's now a Descriptor property in IMessage, which is explicitly implemented (due to the static property). 3. FieldAccessorTable has gone away 4. IFieldAccessor and OneofFieldAccessor still exist; we *could* put the functionality straight into FieldDescriptor and OneofDescriptor... I'm unsure about that. 5. There's a temporary property MessageDescriptor.FieldAccessorsByFieldNumber to make the test changes small - we probably want this to go away 6. Discovery for delegates is now via attributes applied to properties and the Clear method of a oneof I'm happy with 1-3. 4 I'm unsure about - feedback welcome. 5 will go away 6 I'm unsure about, both in design and implementation. Should we have a ProtobufMessageAttribute too? Should we find all the relevant attributes in MessageDescriptor and pass them down, to avoid an O(N^2) scenario? Generated code changes coming in the next commit.
* First pass at the big rename from ProtocolBuffers to Google.Protobuf.Gravatar Jon Skeet2015-07-17
We'll see what I've missed when CI fails...