Commit Graph
159 Commits
Author SHA1 Message Date
Sergio Pedri c554cdd5db Fixed Guard APIs CS8777 warnings (#3296)
* Added DoesNotReturnAttribute copy

* Added [DoesNotReturn] attributes to throw methods

* Removed warnings on .NET Standard 2.0
2020-05-26 09:10:33 -07:00
9d7ac2ee94 Guard APIs for .NET Standard 2.1 (#3167)
* 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>
2020-05-15 14:14:14 -07:00
Sergio Pedri 21547f3712 Microsoft.Toolkit.HighPerformance package (part 2) (#3273)
* 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
2020-05-13 12:32:20 -07:00
0c5c57edaa New Microsoft.Toolkit.HighPerformance package (#3128)
* 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>
2020-05-05 16:44:11 -07:00
Vincent 922a69a669 Merge pull request #3246 from vgromfeld/observableGroupExtensions
Observable group extensions
2020-04-30 12:33:00 +02:00
Vincent Gromfeld 64ad95bbd5 fix alignment 2020-04-30 11:59:35 +02:00
Vincent 05cb6465a2 fix documentation 2020-04-23 00:55:07 +02:00
Vincent c268332a40 Merge branch 'observableGroupExtensions' of https://github.com/vgromfeld/WindowsCommunityToolkit into observableGroupExtensions 2020-04-23 00:53:34 +02:00
Vincent 4dd40556bd add first and elementat methods 2020-04-22 18:12:48 +02:00
Vincent 1efa21ab93 add SetItem + fix doc 2020-04-22 18:12:48 +02:00
Vincent a81e32ac5e Add insertitem method 2020-04-22 18:12:48 +02:00
Vincent 9db885ce42 add add/remove extension methods 2020-04-22 18:12:48 +02:00
Michael Hawker MSFT (XAML Llama) 83c22d285f Merge pull request #3201 from vgromfeld/u/vgromfeld/observableGroup
Add observable group API
2020-04-22 08:42:34 -07:00
Vincent 9a8fbe55f8 add first and elementat methods 2020-04-21 23:12:02 +02:00
Vincent 75537d56a6 add SetItem + fix doc 2020-04-21 22:42:21 +02:00
Vincent 408c915ff1 Add insertitem method 2020-04-21 22:27:03 +02:00
Vincent 47f1bcc5ea add add/remove extension methods 2020-04-21 00:07:06 +02:00
Vincent 8ca869469e Merge remote-tracking branch 'origin/master' into u/vgromfeld/observableGroup 2020-04-02 23:14:34 +02:00
Vincent f8285cd1d5 simplify implementation of ReadOnlyObservableGroupedCollection 2020-04-02 22:54:56 +02:00
Vincent cca93e0eaf address PR comments 2020-04-01 22:53:33 +02:00
Michael Hawker MSFT (XAML Llama) 69f1af3a18 Merge pull request #3207 from windows-toolkit/testsCI+UnitTestFixes
✔ Fix Unit Tests for Integration with CI Builds 🎉🎉🎉
2020-04-01 13:04:53 -07:00
michael-hawker b5931110a9 Ignore System tests which fail in CI 2020-04-01 12:24:03 -07:00
michael-hawker e3ab3759b2 Add/Fix System Unit Tests for Nullable Booleans, see Issue #3198
To be removed later with WinUI 3 transition.
2020-03-31 14:48:22 -07:00
Vincent b8b33ee24f Merge branch 'master' into u/vgromfeld/observableGroup 2020-03-30 23:15:35 +02:00
Ze Groumf 905d79f47c add IReadOnlyObservableGroup interface for x:Bind 2020-03-30 23:13:22 +02:00
Ze Groumf 1e6a2e2bb2 simplify base constructor call 2020-03-26 23:27:13 +01:00
Ze Groumf 0b9b929ae3 add IList tests 2020-03-26 22:40:04 +01:00
Ze Groumf 7bb10d54f6 updated sample and fixed ReadOnlyGroupedCollection implementation 2020-03-26 00:18:16 +01:00
Michael Hawker MSFT (XAML Llama) f3fdc21288 Merge pull request #3189 from windows-toolkit/styleCopUpdate
Updated StyleCop to 1.1.118.
2020-03-24 18:16:49 -07:00
Alexandre Zollinger Chohfi 98bf68c112 Updated StyleCop to 1.1.118. 2020-03-24 16:54:08 -07:00
Vincent 915292dd43 Merge pull request #3155 from vgromfeld/u/vgromfeld/removeUnusedFields
Remove IDE0059: Value assigned to variable is never used
2020-03-23 23:02:30 +01:00
Ze Groumf 73287b3a0c add unit tests 2020-03-19 23:59:36 +01:00
Ze Groumf d37b52c679 first drop 2020-03-19 22:01:34 +01:00
Vincent 50b0e556a3 Merge branch 'master' into u/vgromfeld/removeUnusedFields 2020-03-16 08:51:49 +01:00
Sergio PedriandMichael Hawker MSFT 8acc8b7308 Guard APIs (#3131)
* 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

* Fixed IsCloseTo tests

* Fixed IsNull tests

Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
2020-03-14 18:13:04 -07:00
Vincent Gromfeld 5424cf709d remove unused fields 2020-02-28 15:15:14 +01:00
Alexandre Zollinger Chohfi 37438bf687 Merge pull request #3033 from windows-toolkit/mhawker/graph-helpers
Graph Control Prep
2019-10-31 14:20:35 -07:00
michael-hawker a87660cf2c Rename Convert to Converters to not clash with system one. 2019-10-24 21:11:46 -07:00
michael-hawker 2808f6dc36 Add Missing Header 2019-10-24 18:45:12 -07:00
michael-hawker 4ed955e13f Move ToFileSizeString to new Convert static class. 2019-10-24 15:24:48 -07:00
Michael Hawker MSFT (XAML Llama) a8a71d479d Grab Exception Message if no InnerException 2019-10-22 17:46:55 -07:00
michael-hawker 03ce8524c9 Clean-up warnings by modernizing syntax 2019-10-21 12:46:13 -07:00
michael-hawker ad63343636 Move needed graph Dependencies to Microsoft.Toolkit and Microsoft.Toolkit.Uwp.UI
FileSize String Extension and Converter
Centralize Usage in other places from OneDrive and SharePoint
2019-10-21 00:47:27 -07:00
Michael Hawker MSFT (XAML Llama) e3dfa18c61 Merge pull request #3003 from windows-toolkit/mhawker/singleton
Add Singleton Pattern Helper to Microsoft.Toolkit
2019-09-13 14:15:51 -07:00
michael-hawker 0c8acd6b64 Add Singleton Pattern Helper to Microsoft.Toolkit 2019-09-13 13:55:01 -07:00
Michael Hawker MSFT (XAML Llama) e4598bca86 Merge pull request #2499 from Code-ScottLe/NotifiticationBuilders
Builders for ToastContent and TileContent
2019-09-12 15:28:20 -07:00
Michael Hawker MSFT (XAML Llama) 8bd95690c7 Merge branch 'master' into NotifiticationBuilders 2019-09-12 14:28:35 -07:00
Michael Hawker MSFT (XAML Llama) fdb1f85f64 Merge pull request #2639 from h82258652/imageex-lazyloading
Lazy loading feature for ImageEx
2019-09-11 14:19:02 -07:00
Michael Hawker MSFT (XAML Llama) 43c0fa3b2b Merge branch 'master' into imageex-lazyloading 2019-09-11 14:07:09 -07:00
Scotty Le 89c11dbca8 Merge branch 'master' into NotifiticationBuilders 2019-03-25 00:15:26 -07:00