Releases: Nixill/CSharp.Nixill
v0.9.2 - NumberUtils.NNMod
- Add NumberUtils.NNMod, which performs a modul between two numbers but forces the result to be non-negative (by adding the divisor if it's negative).
v0.9.1 - EnumerableUtils.Of(params)
Adds a params T[] items
overload to EnumerableUtils.Of
to allow enumerating multiple args.
v0.9.0
NOT BACKWARDS COMPATIBLE
- Update to target net6.0
- Fixes problems with side searching on AVLTrees (which would have given issues with
Lower
andHigher
when searching from an existing key)
IGrid and its subclasses
- The two-
int
indexer now picks row first. IList
parameters (including the constructor and new-data methods) have been replaced withIEnumerable
.- Added extra overloads for
AddColumn
,InsertColumn
,AddRow
, andInsertRow
(the latter two userow
instead ofcolumn
in parameter names), replacing theIEnumerable<U>
parameter with...T columnItem
- creates a new column or row containing copies of that itemFunc<T> columnItemFunc
- creates a new column or row with items initialized by the funcFunc<int, T> columnItemFunc
- creates a new column or row with items initialized by the func (theint
parameter is the row or column number)
GetEnumerator()
andGetColumnEnumerator()
now returnIEnumerator<IEnumerable<T>>
.- Added
RemoveColumnAt(int)
andRemoveRowAt(int)
methods.
GridReference
- Removed condition that
GridReference
s point to non-negative rows and columns
OffsetGrid
An entire new class, a grid that can have negative coordinates. Inherits IGrid<T>
.
CompareUtils
Cleaned up some dumb code that like, how was that supposed to work?
EnumerableUtils
New class with the following methods:
Of<T>(T item)
- An Enumerable that only contains the one item providedRepeat<T>(Func<T> func, int count)
- Repeatedly run a function and enumerate its resultsRepeatInfinite<T>(Func<T> func)
- Repeatedly run a function foreverRepeatInfinite<T>(T item)
- Returns a single item forever
And the following extension methods:
Do<T>(this IEnumerable<T> list, Action<T> act)
- Performs an action for every item in the listDo<T>(this IEnumerable<T> list, Action<int, T> act)
- The above but also uses the item's indexMaxMany<T>(this IEnumerable<T> list)
(ifT
is comparable) - Returns all items that evaluate to the maximum valueMaxMany<T>(this IEnumerable<T> list, IComparaer<T> comp)
- Returns all items that evaluate to the maximum valueMaxManyBy<T>(this IEnumerable<T> list)
(ifT
is comparable) - Returns all items that have the maximum of a propertyMaxManyBy<T>(this IEnumerable<T> list, IComparaer<T> comp)
- Returns all items that have the maximum of a propertyMinMany<T>(this IEnumerable<T> list)
(ifT
is comparable) - Returns all items that evaluate to the minimum valueMinMany<T>(this IEnumerable<T> list, IComparaer<T> comp)
- Returns all items that evaluate to the minimum valueMinManyBy<T>(this IEnumerable<T> list)
(ifT
is comparable) - Returns all items that have the minimum of a propertyMinManyBy<T>(this IEnumerable<T> list, IComparaer<T> comp)
- Returns all items that have the minimum of a propertyProduct<TLeft, TRight, TResult>(this IEnumerable<TLeft> left, IEnumerable<TRight> right, Func<TLeft, TRight, TResult> func)
- Selects an item from every combination of items from two listsProduct<TLeft, TRight>(this IEnumerable<TLeft> left, IEnumerable<TRight> right)
- Selects every combination of items from two lists
NumberUtils
- Clarify an error message in
IntToChar(int)
- Correct some documentation comments on
LeadingZeroStringToInt(string, int)
RegexUtils
TryGroup
methods
v0.8.6 - INavigable wrappers
This release adds AsReadOnly
extension methods to INavigableDictionary
and INavigableSet
.
v0.8.5 - Dictionary searching-around methods
This release adds KeysAround(K)
and EntriesAround(K)
methods to AVLTreeDictionary<K, V>
.
v0.8.4 - Read-only navigable interfaces
This release adds the interfaces IReadOnlyNavigableSet<T>
and IReadOnlyNavigableDictionary<K, V>
, which have the same methods to implement as the non-readonly interfaces but inherit from read-only interfaces.
v0.8.3 - Library rename hotfix
The library is now called Nixill
.
v0.8.2 - Library renamed
The library has been renamed to simply Nixill
. No changes have been made to the library itself.
v0.8.1 - Take 2 at uploading to nuget
No changes to codebase since v0.8.0; however, I need to try again at actually uploading.
v0.8.0 - AVLTreeSet and AVLTreeDictionary, DictionaryGenerator
Changes since 0.7.3
- GitHub Packages is no longer used for publishing, please check out the package in the NuGet Gallery.
- Created
AVLTreeDictionary<K, V>
, an implementation ofINavigableDictionary<K, V>
(which extendsIDictionary<K, V>
) backed by an AVL Tree (in fact specifically by anAVLTreeSet<KeyValuePair<K, V>>
). - Created
AVLTreeSet<T>
, an implementation ofINavigableSet<T>
(which extendsISet<T>
) backed by an AVL Tree. - Created
DictionaryGenerator<K, V>
, an implementation ofIDictionary<K, V>
that can wrap around any existing or new dictionary rather than extendingDictionary<K, V>
. ReplacesGeneratorDictionary<K, V>
which is now Obsolete. - Added
DefaultGenerator<K, V>
which generates values asdefault(V)
. - Added
EmptyConstructorGenerator<K, V>
which generates values asnew V()
.