In general, I think it will help us to debug issues if we have less C
code and more Ruby code. This method can be implemented in pure Ruby,
so this commit converts it to pure Ruby.
This file contains a lot of code that doesn't compile for Xbox One and doesn't appear to be necessary for usage on that platform. _WIN32 is defined for the Xbox One platform.
It appears this file was including winsock2.h just to get the timeval struct definition. There are platforms, such as Xbox One, that don't use winsock but do compile with _MSC_VER set, so just drop in the struct definition we needed instead of including all of winsock. This fixes compilation of this file for Xbox One. Without this change, there were numerous `timeval` complaints such as
```
1>c:\dev\protobuf\src\google\protobuf\util\time_util.h(153): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (compiling source file C:\dev\protobuf\src\google\protobuf\util\time_util.cc)
1>c:\dev\protobuf\src\google\protobuf\util\time_util.h(153): error C2143: syntax error: missing ',' before '&' (compiling source file C:\dev\protobuf\src\google\protobuf\util\time_util.cc)
```
etc.
* 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.