1. 30 Jul, 2015 3 commits
  2. 27 Jul, 2015 1 commit
    • Jon Skeet's avatar
      First attempt at using profile 259 for Google.Protobuf. · 0dbd5ec8
      Jon Skeet authored
      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.
      0dbd5ec8
  3. 21 Jul, 2015 1 commit
    • Jon Skeet's avatar
      Revamp to reflection. · 53c399a1
      Jon Skeet authored
      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.
      53c399a1
  4. 17 Jul, 2015 2 commits
  5. 16 Jul, 2015 1 commit
    • Jon Skeet's avatar
      First pass at wrapper types. · 8a0312b2
      Jon Skeet authored
      - We do still generate the message types, as otherwise reflection breaks, even though it doesn't actually use those types.
      - JSON handling hasn't been implemented yet
      8a0312b2
  6. 09 Jul, 2015 2 commits
    • Jon Skeet's avatar
      Lots more tests for FieldCodec, MapField, RepeatedField · 14f2222a
      Jon Skeet authored
      ... and some implementation changes to go with them.
      14f2222a
    • Jon Skeet's avatar
      Implement reflection properly for fields. · 78ea98f5
      Jon Skeet authored
      - FieldAccessorTable is now non-generic
      - We don't have a static field per message type in the umbrella class. (Message descriptors are accessed via the file descriptor.)
      - Removed the "descriptor assigner" complication from the descriptor fixup; without extensions, we don't need it
      - MapField implements IDictionary (more tests would be good...)
      - RepeatedField implements IList (more tests would be good)
      - Use expression trees to build accessors. (Will need to test this on various platforms... probably need a fallback strategy just using reflection directly.)
      - Added FieldDescriptor.IsMap
      - Added tests for reflection with generated messages
      
      Changes to generated code coming in next commit.
      78ea98f5
  7. 30 Jun, 2015 1 commit
  8. 26 Jun, 2015 1 commit
    • Jon Skeet's avatar
      Tweaks and more tests for maps · c1283310
      Jon Skeet authored
      - Change the default message hash code to 1 to be consistent with other code
      - Change the empty list/map hash code to 0 as "empty map" is equivalent to "no map"
      - Removed map fields from unittest_proto3.proto
      - Created map_unittest_proto3.proto which is like map_unittest.proto but proto3-only
      - Fixed factory methods in FieldCodec highlighted by using all field types :)
      - Added tests for map serialization:
        - Extra fields within entries
        - Entries with value then key
        - Non-contiguous entries for the same map
        - Multiple entries for the same key
      
      Changes to generated code coming in next commit
      c1283310
  9. 25 Jun, 2015 2 commits