| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
This includes all the well-known types except Any.
Some aspects are likely to require further work when the details of the JSON parsing expectations are hammered out in more detail. Some of these have "ignored" tests already.
Note that the choice *not* to use Json.NET was made for two reasons:
- Going from 0 dependencies to 1 dependency is a big hit, and there's not much benefit here
- Json.NET parses more leniently than we'd want; accommodating that would be nearly as much work as writing the tokenizer
This only really affects the JsonTokenizer, which could be replaced by Json.NET. The JsonParser code would be about the same length with Json.NET... but I wouldn't be as confident in it.
|
| |
|
|
|
|
| |
The nullable value type fields already worked, but the use of the CLR property concealed the difference between string and StringWrapper fields.
|
|
|
|
| |
equality).
|
|
|
|
| |
The included C# test will fail until the regenerated code is used, which is in the next commit.
|
|\
| |
| | |
Support ToString in RepeatedField and MapField.
|
| |
| |
| |
| |
| |
| | |
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.
|
|/ |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| | |
Generate C# directory hierarchy with new option
|
| |
| |
| |
| | |
Other changes are due to the well-known types changing without us regenerating.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This introduces a new C# option, base_namespace.
If the option is not specified, the behaviour is as before: no directories are generated.
If the option *is* specified, all C# namespaces must be relative to the base namespace, and the directories are generated relative to that namespace.
Example:
- Any.proto declares csharp_namespace = "Google.Protobuf.WellKnownTypes"
- We build with --csharp_out=Google.Protobuf --csharp_opt=base_namespace=Google.Protobuf
- The Any.cs file is generated in Google.Protobuf/WellKnownTypes (where it currently lives)
We need a change to descriptor.proto before this will all work (it wasn't in the right C# namespace) but that needs the other descriptors to be regenerated too. See next commit...
|
|/
|
|
|
| |
We still need the JSON representation, which relies on something like a DescriptorPool to fetch message types from based on the type URL. That will come a bit later.
(The DescriptorPool comment in this commit is just a note which will prove useful if we use DescriptorPool itself.)
|
| |
|
|\
| |
| | |
Include descriptor.proto in nuget package
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
| |
We now do this in protoc instead of the generation simpler.
Benefits:
- Generation script is simpler
- Detection is simpler as we now only need to care about one filename
- The embedded descriptor knows itself as "google/protobuf/descriptor.proto" avoiding dependency issues
This PR also makes the "invalid dependency" exception clearer in terms of expected and actual dependencies.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
With this in place, generating APIs on github.com/google/googleapis works - previously annotations.proto failed.
Currently there's no access to the annotations (stored as extensions) but we could potentially expose those at a later date.
|
|
|
|
|
|
| |
- Removed a TODO without change in DescriptorPool.LookupSymbol - the TODOs were around performance, and this is only used during descriptor initialization
- Make the CodedInputStream limits read-only, adding a static factory method for the rare cases when this is useful
- Extracted IDeepCloneable into its own file.
|
|\
| |
| | |
Implement Keys and Values as views in MapField
|
| | |
|
| | |
|
| | |
|
|/
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Visual Studio is happy with it, but Mono isn't :(
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.)
|
|
|
|
| |
We don't need to expose the InvalidProtocolBufferException factory method now that the generated code doesn't throw the exception.
|
| |
|
|
|
|
|
|
|
|
| |
stream", rather than using an awkward out parameter.
This simplifies quite a lot of code.
Generated code in next commit.
|
| |
|
|
|
|
|
|
| |
expected to.
We should now have no conformance failures.
|
| |
|
|
|
|
|
| |
This is expected to be the cause of the conformance test failures.
Generated code in next commit.
|
|
|
|
| |
Completely untested so far - easier to get started in VS and then transfer to Linux for tweaking...
|
|\
| |
| | |
Document everything, and turn on errors if we fail to document anything in the future
|
| | |
|
| |
| |
| |
| | |
the future.
|
|/ |
|
|\
| |
| | |
JSON formatting for FieldMask
|