* Initial guard APIs added
* Added EqualTo and NotEqualTo APIs
* Added more Guard APIs
* New interval Guard APIs added
* Added Guard APIs for IEnumerable<T> values
* Renamed APIs
* Added Guard APIs for Stream values
* Added Guard APIs for ReadOnlySpan<T> values
* Added Guard APIs for ReadOnlyMemory<T> values
* Code refactoring
* Minor code refactoring
* Added Guard.IsBitwiseEqualTo<T> API
* Added Guard.IsNull API
* Code refactoring and optimizations
* Code refactoring
* Added Guard.HasSizeNotEqualTo<T> API
* Added Guard size API overloads for the string type
* Added Guard size API overloads for T[] arrays
* Code refactoring
* Removed unnecessary using directives
* Added Guard reference check APIs
* Added new Guaard APIs for string values
* Improved Guard.IsBitwiseEqualTo<T> API
* Improved Guard.IsNull APIs
* Added new size APIs for copy operations
* Added new type test APIs, minor code tweaks
* Minor bug fixes
* Added Guard APIs for Task values
* Minor code tweak
* Added new Guard.IsEmpty APIs
* Refactored code to remove unsafe requirement
* Added Guard.IsInRange<T> APIs
* Added missing type checks in Guard.IsBitwiseEqualTo API
* Added ValueTypeExtensions.ToHexString API
* Code refactoring
* Added ValueTypeExtensions tests
* Added general Guard tests
* Bug fixes in the Guard class
* Minor speed improvements
* Code refactoring
* Removed unnecessary using directives
* More speed improvements and API refactoring
* Refactored/fixed some Guard APIs
* More bug fixes
* Added Guard tests for array APIs
* Fixed the Guard.IsNotEmpty<T> array API
* Moved exception throwers to separate class
* Moved general Guard throwers to separate class
* Disabled warning for XML overload resolution
* Moved array Guard throwers to separate class
* Moved stream Guard throwers to separate class
* Fixed some XML docs
* Moved enumerable Guard throwers to separate class
* Moved task Guard throwers to separate class
* Added new Guard APIs for tasks
* Moved string Guard throwers to separate class
* Moved ReadOnlySpan<T> Guard throwers to separate class
* Added Span<T> APIs to the Guard class
* Moved ReadOnlyMemory<T> Guard throwers to separate class
* Added Memory<T> APIs to the Guard class
* Minor code refactoring
* Update file headers
* Removed unnecessary methods
* Added TypeExtensions.ToTypeString extension
* Improved error messages for general Guard APIs
* Improved error messages for Enumerable Guard APIs
* Improved error messages for stream Guard APIs
* Improved error messages for array Guard APIs
* Improved error messages for string Guard APIs
* Improved error messages for task Guard APIs
* Improved error messages for span Guard APIs
* Improved error messages for memory Guard APIs
* Improved type string for nullable types
* Improved type string for value tuple types
* Minor performance improvement
* Added numeric comparison T4 file
* Updated .gitignore to skip generated files
* Moved comparison Guard APIs to separate file
* Renamed template file, fixed incorrect XML doc
* Fixed missing blank line
* Removed unnecessary type parameters
* Moved enumerable Guard APIs to separate file
* Code refactoring in the enumerable T4 template
* Renamed a file
* Added empty template for ThrowHelper.Collection
* Code refactoring in the T4 templates
* Switched collection throw helpers to T4 generation
* Code refactoring
* Removed incorrect file header
* Added new Guard.IsInRangeFor API
* Updated .gitignore, added generated files to source control
* Added tests for Guard.IsInRangeFor
* Improved formatting of values in error messages
* Improved error messages
* More improvements to the error messages
* Minor code tweaks
* Added Guard.IsNotOfType APIs
* Added Guard.IsNotAssignableToType APIs
* Added Guard.IsDefault<T> APIs
* Fixed some XML docs
* Added missing [Pure] attribute
* Fixed typo in a comment
* Removed unnecessary comment after code changes
* Added XML comment for the T4 service
* Added more comments to ToHexString
* Suppressed an incorrect code style warning
* Added more tests for Guard.IsInRange
* Added Guard.IsNotInRangeFor APIs
* Added readme file for the T4 templates
* Changed generated files extension to .g.cs to avoid conflicts
* Added Guard.IsCloseTo and Guard.IsNotCloseTo APIs
* Added tests for IsCloseTo
* Updated ".g.cs" extension for generated files
Co-Authored-By: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
* Removed extra space (typo)
Co-Authored-By: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
* More tweakes to the Guard.md file
* Excluded TypeInfo.g.cs file from .ttinclude from checkout
* Added more info about target ranges for some APIs
* Added IsCloseTo overloads for long type
* Minor code tweaks
* Added comment to describe (uint) cast range check trick
* Added a nore about the .g.cs files being checked in
* Added .NET Standard 2.1 target, adjusted imported packages
* Added [NotNull] attributes when needed
* Added flow attributes to bool Guard APIs
* Added missing Guard APIs for the string type
* Added shared main unit test project
* Removed duplicate files from UWP unit test project
* Refactored UWP unit tests project (can't be in same folder as .shproj)
* Moved markdown tests back into UWP project
* Added UnitTests.NetCore project
* Fixed some styling issues in test projects
* Added .editorconfig file to UniTests.NetCore project too
* Moved .editorconfig file to Shared project folder
* Removed NetCore Tests compilation for Native Configuration.
* Update Windows Community Toolkit.sln
* Updated multiline comments style
* Renamed some Guard APIs
* Fixed collections tests, moved to shared project
* Removed unnecessary [SuppressMessage] attributes
* Added internal [NotNull] and [DoesNotReturnIf] attributes
* Removed build warnings
* Removed leftover compiler directives
* Added Guard.IsTrue/False overloads with custom message
* Fixed test file location after merge
* Fixed Span<T> and Unsafe package references
Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
Co-authored-by: Alexandre Zollinger Chohfi <alzollin@microsoft.com>
Co-authored-by: Alexandre Zollinger Chohfi <chohfi@outlook.com>
Co-authored-by: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
* Added support for .NET Core 2.1 and 3.1 targets
* Fixed T[] dangerous accessors on .NET Standard
* Minor speed improvements to Array2DColumnEnumerable<T>
* Updated 2D array extensions
* Minor code tweaks
* Added DangerousGetLookupReferenceAt<T> extension
* Added BitHelper.HasLookupFlag APIs
* Added BitHelper.ExtractRange and SetRange APIs
* Added bool bitwise mask extensions
* Added StreamExtensions class on .NET Standard 2.0
* Added IBufferWriterExtensions type
* Added more Stream extensions
* Added object field offset extensions
* Minor code refactoring
* Improved description
* Switched managed count to IntPtr
* Refactored GetDjb2HashCode code, minor tweaks
* Unit tests fixes
* Refactored Count extensions, minor tweaks
* Fixed incorrect operators precedence
* Added SpanHelper.GetDjb2LikeByteHash method
* Minor code refactoring
* Code refactoring to HashCode<T>
* Minor style tweaks
* Updated comments styles to follow style convention
* Minor code tweaks to the Count method
* More code tweaks to the Count method
* Added tests for DangerousGetObjectDataByteOffset
* Fixed visibility of new object extensions
* Added tests for 64-bit extract/set range APIs
* Added tests for bool to bitwise mask APIs
* Fixed MemoryStream EOF exception type
* Enabled Stream extension tests on UWP
* Added StreamExtensions read/write value tests
* Minor code refactoring to IBufferWriter<T> extensions
* Added IBufferWriterExtensions tests
* Added MemoryBufferWriter<T> type
* Added IBuffer<T> interface
* Added MemoryBufferWriterDebugView<T> type
* Added MemoryBufferWriter<T> tests
* Fixed a unit test
* Fixed incorrect inlining attribute
* Removed leftover partial modifier
* Added missing readonly modifier for lock structs
* Improved summary for the Box<T> type
* Added comments for #pragma warning disable items
* Added info on (x << 5) + x over x * 33 optimization
* Improved XML docs for BitHelper APIs
* Fixed potentially misleading test method names
* Added comment for MemoryOwner<T>.Dispose test
* Fixed multi-target support for string extensions
* Improved IMemoryOwner.AsStream tests
* Added XML remarks to the HashCode<T> type
* Improved docs for ReadOnlySpanExtensions.GetDjb2HashCode<T>
* Tweaked an XML link
* Tweaked attributes for SpanHelper methods
* Minor optimizations to SpanHelper.Count
* Fixed an overflow bug in SpanHelper.Count
* Speed improvements to SpanHelper.Count
~35% speedup with large collections of byte-size values, ~10% with other types
* Updated .csproj description
* Added float/double support to SpanHelper.Count
* Added exception to the Box<T> constructor
* Removed unnecessary [SuppressMessage] attributes
* Removed [SuppressMessage] attributes
* Changed NullableRef<T>-s exceptions to follow Nullable<T>
* Added more operators to NullableRef<T> types
* Added missing in modifiers in ParallelHelper.For overloads
* Removed SIMD support for float/double count
It lacked proper handling of NaN values and both (signed) zeros
* Fixed compiler directives in SpanEnumerable<T>
* Updated ReadOnlySpanEnumerable<T> type
* Updated NuGet package tags
* Added HighPerformance package to readme.md list
* Added .NET Standard 1.4 target
* Added tests for implicit NullableRef<T> operators
* Removed unnecessary using directive
* Added missing sealed modifiers to MemoryStream methods
* Added Span<T>.IndexOf(ref T) extension
* Added ReadOnlySpan<T>.IndexOf<T>(in T) extension
* Added missing changes (incorrect commit)
* Removed unnecessary workaround (method is inlined)
* Added improved remarks for bool.ToBitwiseMask32/64
* Added internal NotNullWhen attribute when < .NET Standard 2.1
* Enabled .csproj-wide nullability annotations
* Minor code style tweaks
* Added [ReadOnly]NullableRef<T>.Null static properties
* Code refactoring
* Added StringExtensions tests
* Fixed test method names
* Added ArrayExtensions tests
* Removed MemoryPool<T>.Resize extension
* Added ArrayPoolExtensions tests
* Added SpinLockExtensions tests
* Moved HashCode<T> class to Helpers namespace
* Added ByReference<T> tests
* Changed visibility of one constructor
* Improved ByReference<T> tests
* Added ReadOnlyByReference<T> tests
* Fixed a small build error
* Added new List<T> extensions
* Added List<T> extensions tests
* Fixed a parameter name
* Fixed incorrect XML docs
* Added missing List<T> extension APIs
* Disabled warning
* Removed unnecessary type constraint
* Bug fixes to some List<T> extensions
* Improved some XML docs
* Added List<T>.DangerousAsSpan extension
* Added more unit tests
* Fixed a bug in the List<T>.DangerousAsSpan extension
* Minor tweaks to some docs
* Removed List<T> extensions (too hacky)
* Minor code tweaks (just in case)
* Fixed incorrect API visibility
* Added tests for the HashCode<T> type
* Added .NET Core 3.0 tests for HashCode<T>
* Added ParallelHelper.For tests
* Code refactoring
* Added ParallelHelper.For2D tests
* Fixed empty condition check for 2D loops
* Added ParallelHelper.ForEach in tests
* Added ParallelHelper.ForEach ref tests
* Fixed ParallelHelper.For2D tests
* Improved ParallelHelper.For/2D tests
* Switched HighPerformance tests to shared project
* Renamed HighPerformance.NetCore project
* Moved HighPerformance tests to subfolder
* Fixed incorrect namespaces
* Added empty HighPerformance.UWP test project
* Fixed shared project for UWP test project
* Added missing Unsafe NuGet package to UWP project
* Switched compile tile directives in HighPerformance project
* Added missing file headers
* Minor code refactoring to HashCode<T>
* Minor performance improvements
* Fixed HashCode<T>.Combine API for > int.MaxValue byte sizes
* Improved HashCode<T>.Combine performance on small spans
* Speed improvements in the GetDjb2HashCode<T> API
* Refactored HashCode<T> to facilitate extensions
* Fixed incorrect namespace
* Added HashCodeExtensions class
* Added HashCodeExtensions tests
* Minor code style tweaks
* Added SpanEnumerable<T> type
* Updated T[] and Span<T> Enumerate extensions
* Added SpanExtensions tests
* Fixed an issue in the DJB2 hash method
* Minor code refactoring
* Added EditorBrowsable attributes to enumerator types
* Added MemoryOwner<T> type
* Minor code refactoring
* More code refactoring
* Added MemoryOwner<T> Empty and Length properties
* Added missing header text
* Fixed a refactoring typo
* Added MemoryOwner<T> tests
* Minor code refactoring
* Fixed MemoryOwner<T> XML docs
* Minor optimization to GetDjb2HashCode
* Minor optimization to HashCode<T>.CombineValues
* Minor optimization to Count extension with managed types
* Added a Count test for the managed path
* Added BoolExtensions.ToInt API
* Removed automatically added rules
* Fixed incorrect XML docs
* Added MemoryOwner<T>.DangerousGetReference API
* Added extensions for some MemoryMarshal APIs
* Minor code tweaks
* Added MemoryOwner<T> method
* Added more XML comments
* Fixed an incorrect method prototype
* Code refactoring, added AllocationMode enum
* Added SpanOwner<T> type
* Added SpanOwner<T> tests
* Removed unnecessary check
* Removed unnecessary package reference on .NET Standard 2.1
* Improved tests for ReadOnlySpan<T>.Count
* Fixed a bug in ReadOnlySpan<T>.Count with managed types
* Updated two type constraints
* Minor optimizations to ParallelHelper
* Minor code tweaks
* Removed unnecessary APIs
* Added UInt32Extensions class
* Added unit tests for the UInt32Extensions class
* Fixed some comments
* Added some remarks to the new uint APIs
* Minor optimization
* Added UInt64Extensions class
* Added unit tests for UInt64Extensions type
* Fixed some typos and comments
* Fixed a unit test
* Minor performance improvements
* Added ToString() override and debug display to MemoryOwner<T>
* Added ToString() override and debug display to SpanOwner<T>
* Added MemoryOwner<T> debug proxy type
* Added SpanOwner<T> debug proxy type
* Added missing using directive
* Added info to the .csproj file
* Removed two APIs, for additional safety
* Refactored bit helpers into a separate class, added by ref overloads
* Minor code tweaks
* Added Box<T> type
* Added tests for the Box<T> type
* Added Box<T> object schema
* Added Box<T>.GetFrom(object) API
* Added more Box<T> tests, added more comments
* Fixed a copy paste fail
* Added ValueTypeExtensions type
* Added ValueTypeExtensions tests
* Added missing GC.SuppressFinalize call in MemoryOwner<T>
* Initial implementation of MemoryStream
* Implemented MemoryStream.Seek method
* Implemented ReadByte and WriteByte methods
* Added Memory<T> extension to create a Stream
* Implemented MemoryStream.Dispose method
* Fixed typos in a test class
* Added ReadAsync overrides
* Added WriteAsync overrides
* Code refactoring
* Added more .NET Standard 2.1 overrides
* Moved CopyToAsync method to .NET Standard 2.0
* Moved FlushAsync, reordered methods
* Added [ReadOnly]Memory<T> extension tests
* Added initial stream tests
* Fixed a bug in MemoryStream.Read
* Added unit tests for the MemoryStream type
* Added MemoryStream.[Read|Write]Byte tests, minor tweaks
* Updated .sln file
* Added IMemoryOwnerStream type
* Added IMemoryOwnerExtensions.AsStream type
* Minor tweaks to some XML comments
* Added IMemoryOwner extensions and stream tests
* Fixed an incorrect namespace
* Aadded ArrayPoolBufferWriter<T> type
* Minor code refactoring
* Added debug view and ToString override for ArrayPoolBufferWriter<T>
* Minor code refactoring
* Added destructor to ArrayPoolBufferWriter<T> type
* Added tests for ArrayPoolBufferWriter<T>
* Fixed some copy-paste fails
* Added IMemoryOwner<T> interface to ArrayPoolBufferWriter<T>
* Updated .csproj description
* Fixed some comments
* Updated sln
* Minor code style tweak
* Minor optimization, code style tweaks
* Fixed some tests not running on .NET Core 3.0
* Added initial Array2DExtensions type
* Added T[,].AsSpan extension
* Added Count<T> and Djb2 hashcode extensions for T[,] arrays
* Added tests for the 2D array extensions
* Code refactoring
* Added NullableByReference<T> type
* Minor code refactoring
* Added NullableReadOnlyByReference<T> type
* Added unit tests for new Nullable[ReadOnly]ByReference<T> types
* Fixed an XML comment
* Added T[,] array GetRow and GetColumn extensions
* Added Array2DColumnEnumerable<T>.ToArray() helper method
* Code refactoring
* Added T[,].GetRow support on .NET Standard 2.0
* Added and optimized T[,].Fill extension
* Added T[,].Fill tests
* Added tests for T[,].GetRow extension
* Bug fixes in the 2D array enumerators
* Added tests for T[,].GetColumn extension
* Fixed a typo
* Fixed duplicate using directives
* Fixed an XML comment
* Inverted precompiler conditional directive for clarity
* Fixed error in an XML comment
* Removed unnecessary using directive
* Fixed publisher name in UWP test project
* Added StyleCop.Analyzers package to UWP test project
* Resolved StyleCop warnings in unit tests
* Added StyleCop.Analyzers package to .NET Core test project
* Resolved .NET Core specific StyleCop warnings
* Updated Test SDK and packages in .NET Core unit test project
* Fixed object name in MemoryStream.ThrowObjectDisposedException()
* Minor code style tweak and optimization
* Added test for the argument name in ParallelHelper exceptions
* Fixed visibility modifiers
* Fixed Box<T> type on ARM devices
* Added MemoryStream tests for argument names in exceptions
* Minor improvements to some unit tests
* Removed duplicate System.Runtime.CompilerServices.Unsafe reference
* Removed unnecessary StyleCop reference and .ruleset file
* Resolved StyleCop warnings in unit tests
* Minor performance improvements in ByReference<T> types on x64
* Minor style tweaks
* Fixed missed refactoring
* Code refactoring
* Added missing readonly struct modifiers
* Enabgled running HighPerformance tests on build.
(cherry picked from commit c5524125391ca208586d0de09fffb89e3a01264d)
* Bug fixes in the Box<T> type on some runtimes
* Added missing "Pack" target in UWP test project
* Code refactoring, moved Box<T> extensions to same file for clarity
* Bumped System.Runtime.CompilerServices.Unsafe to 5.0.0-preview.2.20160.6
* Fixed Box<T>.ToString/GetHashCode issues on .NET Core 2.1 Release
* Updated comments on the Box<T>.GetReference() method
Also pushing this commit just to re-trigger the CI build, since GitHub went offline and caused the previous one to fail/half midway through
* Fixed package downgrade in UWP test project
* Aligned ref returns for ReadOnlySpan<T>/string to MemoryMarsha.GetReference
* Renamed ByReference<T> APIs
* Removed unnecessary preview package
Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
Co-authored-by: Alexandre Zollinger Chohfi <alzollin@microsoft.com>