* 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
Some compilers, such as PS4's clang, were giving errors such as:
C:\dev\protobuf\src\google/protobuf/parse_context.h(227,5): error : no type named 'uintptr_t' in namespace 'std'; did you mean simply 'uintptr_t'?
Adding the necessary include for integer types fixes these.
All bazel crosstools automatically pass -Wall to compiles. The order of
operations is:
- bazel crosstool flags
- `--host_copt` flags and other variations like `--host_cxxopt`
- the `copts` defined on the rule
Because of this when protobuf produces warnings, there's no way to
disable them from the consumer side if they are re-enabled later by
another `-Wall` flag.
GCC 8 added a -Wclass-memaccess that is enabled in -Wall that warns when
making direct memory modifications to non-trivial objects. The objects
that are modified here are only "non-trivial" in non-interesting ways
(e.g., removal of copy constructor) and can be safely modified as is
being done.
This simply explicitly casts the pointers before calling memset to
indicate that they should be treated as raw memory.