1. 03 May, 2019 1 commit
    • Sydney Acksman's avatar
      C# Proto2 feature : Extensions (#5350) · 9e89b6e7
      Sydney Acksman authored
      * Compiler changes (extensions)
      
      * Generated changes (extensions)
      
      * Library changes (extensions)
      
      * Adjusted a summary to indicate ContainingType can be null for extensions
      
      * Compiler changes (custom option review + access level review)
      
      * Generated code changes (custom options + access review)
      
      * Library changes (custom options + access review)
      
      * Support C# 6 with library changes
      
      * Access HasValue by property
      
      * Set access level of all extension classes to internal (revert in next PR)
      
      * Added null checks to custom options
      
      * Rebase on master and regenerate Conformance
      
      * Removed second dictionary from ExtensionSet
      
      * Rebased compiler changes
      
      * Rebased generated code changes
      
      * Rebased library changes + review changes
      
      * Add more safety checks to extension accessors
      
      * Remove instances where extension sets were unnecessarily allocated
      
      * Remove cleared items from sets
      Empty sets are now made null
      IExtensionMessage -> IExtendableMessage
      
      * Remove dead code from IExtensionValue impls
      
      * Clean both repeated and single value extensions
      
      * Add GetOrRegister method for repeated fields and allow clearing repeated extensions
      
      * Add type safe ClearExtension methods, remove non-generic IExtendableMessage interface.
      
      * Simplify ExtensionSet.TryMergeFieldFrom
      
      * Rebase on master to resolve conflicts
      
      * Fix Makefile.am
      
      * Add ObjectIntPair to Makefile.am
      9e89b6e7
  2. 21 Feb, 2019 1 commit
  3. 24 Sep, 2018 1 commit
    • Sydney Acksman's avatar
      C# Proto2 feature : Field presence and default values (#4642) · 54176b26
      Sydney Acksman authored
      * Compiler changes
      
      * Generated code changes
      
      * Library changes
      
      * Compiler style changes
      
      * Generated style changes
      
      * Fix Windows build errors
      
      * Implement changes from review
      
      * Reintroduce proto2 check
      
      * Compiler changes (required handling review)
      
      * Generated code changes (required handling review)
      
      * Library changes (required handling review
      
      * Field presence rewrite (compiler changes)
      
      * Field presence rewrite (generated code changes)
      
      * Compiler comment
      
      * IFieldAccessor.HasValue library implementation
      
      * Remove Clear methods and default values from proto3 code (Compiler)
      
      * Remove Clear methods and default values from proto3 code (Generated)
      
      * Remove Clear methods and default values from proto3 code (Library)
      
      * Fix distcheck error
      
      * Rewrite default string values to use base64 and convert
      
      * Library changes (IMessage2)
      
      * Compiler changes (IMessage2)
      
      * Generated changes (IMessage2)
      
      * Rebased and regenerated
      
      * Compiler changes (initialized extension)
      
      * Generated changes (initialized extension)
      
      * Library changes (initialized extension)
      
      * Refactor MessageExtensions.IsRequired
      
      * Move string default value creator and bytes default value creator back to seperate methods
      
      * Dead code cleanup
      
      * Fixed segmentation fault
      Removed unused header method declarations
      54176b26
  4. 20 Aug, 2018 1 commit
  5. 19 Jan, 2017 1 commit
    • Jon Skeet's avatar
      Support custom options in C# · 047575f2
      Jon Skeet authored
      This consists of:
      - Changing the codegen for the fixed set of options protos, to parse unknown fields instead of skipping them
      - Add a new CustomOptions type in the C# support library
      - Expose CustomOptions properties from the immutable proto wrappers in the support library
      
      Only single-value options are currently supported, and fetching options values requires getting the type right
      and knowing the field number. Both of these can be addressed at a later time.
      
      Fixes #2143, at least as a first pass.
      047575f2
  6. 03 Nov, 2016 1 commit
    • Jon Skeet's avatar
      Change JSON field name formatting · 50a37e01
      Jon Skeet authored
      This affects cases with leading capital letters.
      
      This breaks compatibility with previous C# releases, but
      fixes compatibility with other implementations.
      
      See #2278 for details.
      50a37e01
  7. 20 Apr, 2016 1 commit
  8. 30 Mar, 2016 1 commit
    • Jon Skeet's avatar
      Refactoring of FieldDescriptor · 71e8dca0
      Jon Skeet authored
      This makes no externally visible behavioral changes. Internally and non-behaviorally:
      
      - We use a field (compiler-generated) to store the JsonName to avoid recomputing it repeatedly
      - The documentation for JsonName is updated to reflect the meaning better
      - Readonly autoprops and expression-bodied properties used where possible
      71e8dca0
  9. 29 Mar, 2016 1 commit
  10. 18 Mar, 2016 1 commit
  11. 22 Nov, 2015 1 commit
    • Jon Skeet's avatar
      Tidy up reflection in advance of attempting to implement DynamicMessage. · 72ec3367
      Jon Skeet authored
      There are corner cases where MessageDescriptor.{ClrType,Parser} will return null, and these are now documented. However, normally they *should* be implemented, even for descriptors of for dynamic messages. Ditto FieldDescriptor.Accessor.
      We'll still need a fair amount of work to implement dynamic messages, but this change means that the public API will be remain intact.
      
      Additionally, this change starts making use of C# 6 features in the files that it touches. This is far from exhaustive, and later PRs will have more.
      
      Generated code changes coming in the next commit.
      72ec3367
  12. 30 Oct, 2015 1 commit
  13. 29 Sep, 2015 1 commit
    • Jon Skeet's avatar
      Added documentation to generated code. · 2212f56b
      Jon Skeet authored
      There are now summaries for:
      - The Types nested class (which holds nested types)
      - The file descriptor class for each proto
      - The enum generated for each oneof
      
      (Also fixed two typos.)
      
      Generated code in next commit.
      2212f56b
  14. 08 Aug, 2015 1 commit
    • Jon Skeet's avatar
      Make FieldDescriptor.IsPacked work appropriately. · 547d8e82
      Jon Skeet authored
      This is a bit of a grotty hack, as we need to sort of fake proto2 field presence, but with only a proto3 version of the descriptor messages (a bit like oneof detection).
      Should be okay, but will need to be careful of this if we ever implement proto2.
      547d8e82
  15. 04 Aug, 2015 1 commit
  16. 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
  17. 22 Jul, 2015 1 commit
  18. 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
  19. 17 Jul, 2015 1 commit
  20. 14 Jul, 2015 2 commits
  21. 09 Jul, 2015 2 commits
    • Jon Skeet's avatar
      Fix descriptor reflection in various ways · af259b77
      Jon Skeet authored
      - The protos are no longer publicly exposed at all
      - Oneof detection now works (as we default to -1, not 0)
      - OneofDescriptor exposes the fields in the oneof
      - Removed unnecessary code for replacing protos - remnant of extensions
      - There's now just the non-generic form of IDescriptor
      af259b77
    • 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
  22. 30 Jun, 2015 1 commit
  23. 26 Jun, 2015 1 commit
  24. 09 Jun, 2015 1 commit
  25. 29 May, 2015 1 commit
  26. 29 Apr, 2015 1 commit
  27. 28 Apr, 2015 1 commit
    • Jon Skeet's avatar
      First part of making the C# runtime work with the new codegen. · f3504cf3
      Jon Skeet authored
      1) Remove CSharpOptions
      2) A new version of DescriptorProtoFile (with manual changes from codegen - it would otherwise be Descriptor.cs)
      3) Turn off CLS compliance (which we'll remove from the codebase entirely; I don't think it's actually relevant these days)
      4) Add "public imports" to FileDescriptor, with code broadly copied from the Java codebase.
      Lots more changes to commit before it will build and tests run, but one step at a time...
      f3504cf3