diff --git a/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj b/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj index 10dc89c..47efeb4 100644 --- a/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj +++ b/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/Akade.IndexedSet/Akade.IndexedSet.csproj b/Akade.IndexedSet/Akade.IndexedSet.csproj index bde7d0d..1196a08 100644 --- a/Akade.IndexedSet/Akade.IndexedSet.csproj +++ b/Akade.IndexedSet/Akade.IndexedSet.csproj @@ -9,8 +9,7 @@ True True - 1.0.1 - beta + 1.1.0 Provides an In-Memory data structure, the IndexedSet, that allows to easily add indices to allow efficient querying. Currently supports unique and non-unique indices, range indices as well as fuzzy string matching for single attributes, compound or computed keys. Copyright © Akade 2023 Akade diff --git a/Akade.IndexedSet/PublicAPI.Shipped.txt b/Akade.IndexedSet/PublicAPI.Shipped.txt index 515158e..107b858 100644 --- a/Akade.IndexedSet/PublicAPI.Shipped.txt +++ b/Akade.IndexedSet/PublicAPI.Shipped.txt @@ -4,7 +4,9 @@ Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Add(TElement element Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.AddRange(System.Collections.Generic.IEnumerable! elements) -> int Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Clear() -> void Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Contains(System.Func! indexAccessor, System.ReadOnlySpan infix, string? indexName = null) -> System.Collections.Generic.IEnumerable! +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Contains(TElement element) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Count.get -> int +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Dispose() -> void Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.FuzzyContains(System.Func! indexAccessor, System.ReadOnlySpan infix, int maxDistance, string? indexName = null) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.FuzzyStartsWith(System.Func! indexAccessor, System.ReadOnlySpan prefix, int maxDistance, string? indexName = null) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.GreaterThan(System.Func! indexAccessor, TIndexKey value, string? indexName = null) -> System.Collections.Generic.IEnumerable! @@ -18,14 +20,21 @@ Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.MinBy(Sys Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.OrderBy(System.Func! indexAccessor, int skip = 0, int count = -1, string? indexName = null) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.OrderByDescending(System.Func! indexAccessor, int skip = 0, int count = -1, string? indexName = null) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Range(System.Func! indexAccessor, TIndexKey start, TIndexKey end, bool inclusiveStart = true, bool inclusiveEnd = false, string? indexName = null) -> System.Collections.Generic.IEnumerable! +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Read(System.Func!, System.Collections.Generic.IEnumerable!>! readFunc) -> System.Collections.Generic.IEnumerable! +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Read(TState state, System.Func!, TState, System.Collections.Generic.IEnumerable!>! readFunc) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Remove(TElement element) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Single(System.Func!>! indexAccessor, TIndexKey contains, string? indexName = null) -> TElement Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Single(System.Func! indexAccessor, TIndexKey indexKey, string? indexName = null) -> TElement Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.StartsWith(System.Func! indexAccessor, System.ReadOnlySpan prefix, string? indexName = null) -> System.Collections.Generic.IEnumerable! -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.TryGetSingle(System.Func! indexAccessor, TIndexKey indexKey, out TElement? element, string? indexName = null) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.TryGetSingle(System.Func!>! indexAccessor, TIndexKey indexKey, out TElement? element, string? indexName = null) -> bool +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.TryGetSingle(System.Func! indexAccessor, TIndexKey indexKey, out TElement? element, string? indexName = null) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(System.Action!>! updateFunc) -> void +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, System.Action! updateFunc) -> bool +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, System.Func! updateFunc) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(System.Action!, TState>! updateFunc, TState state) -> void +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, TState state, System.Action! updateFunc) -> bool +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, TState state, System.Func! updateFunc) -> bool +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TState state, System.Action!, TState>! updateFunc) -> void Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Where(System.Func!>! indexAccessor, TIndexKey contains, string? indexName = null) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Where(System.Func! indexAccessor, TIndexKey indexKey, string? indexName = null) -> System.Collections.Generic.IEnumerable! Akade.IndexedSet.Concurrency.ConcurrentIndexedSet @@ -33,6 +42,7 @@ Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Contain Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Remove(TPrimaryKey key) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Single(TPrimaryKey key) -> TElement Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.this[TPrimaryKey key].get -> TElement +Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.TryGetSingle(TPrimaryKey key, out TElement? result) -> bool Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(System.Action!>! updateFunc) -> void Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(System.Action!, TState>! updateFunc, TState state) -> void Akade.IndexedSet.IndexedSet @@ -61,8 +71,8 @@ Akade.IndexedSet.IndexedSet.Remove(TElement element) -> bool Akade.IndexedSet.IndexedSet.Single(System.Func!>! indexAccessor, TIndexKey contains, string? indexName = null) -> TElement Akade.IndexedSet.IndexedSet.Single(System.Func! indexAccessor, TIndexKey indexKey, string? indexName = null) -> TElement Akade.IndexedSet.IndexedSet.StartsWith(System.Func! indexAccessor, System.ReadOnlySpan prefix, string? indexName = null) -> System.Collections.Generic.IEnumerable! -Akade.IndexedSet.IndexedSet.TryGetSingle(System.Func! indexAccessor, TIndexKey indexKey, out TElement? element, string? indexName = null) -> bool Akade.IndexedSet.IndexedSet.TryGetSingle(System.Func!>! indexAccessor, TIndexKey indexKey, out TElement? element, string? indexName = null) -> bool +Akade.IndexedSet.IndexedSet.TryGetSingle(System.Func! indexAccessor, TIndexKey indexKey, out TElement? element, string? indexName = null) -> bool Akade.IndexedSet.IndexedSet.Update(TElement element, System.Action! updateFunc) -> bool Akade.IndexedSet.IndexedSet.Update(TElement element, System.Func! updateFunc) -> bool Akade.IndexedSet.IndexedSet.Update(TElement element, TState state, System.Action! updateFunc) -> bool @@ -75,6 +85,7 @@ Akade.IndexedSet.IndexedSet.IndexedSet(System.Func.Remove(TPrimaryKey key) -> bool Akade.IndexedSet.IndexedSet.Single(TPrimaryKey key) -> TElement Akade.IndexedSet.IndexedSet.this[TPrimaryKey key].get -> TElement +Akade.IndexedSet.IndexedSet.TryGetSingle(TPrimaryKey key, out TElement? result) -> bool Akade.IndexedSet.IndexedSetBuilder Akade.IndexedSet.IndexedSetBuilder Akade.IndexedSet.IndexedSetBuilder @@ -100,4 +111,4 @@ virtual Akade.IndexedSet.IndexedSetBuilder.WithIndex(System virtual Akade.IndexedSet.IndexedSetBuilder.WithIndex(System.Func! keyAccessor, string? indexName = null) -> Akade.IndexedSet.IndexedSetBuilder! virtual Akade.IndexedSet.IndexedSetBuilder.WithPrefixIndex(System.Func! keyAccessor, string? indexName = null) -> Akade.IndexedSet.IndexedSetBuilder! virtual Akade.IndexedSet.IndexedSetBuilder.WithRangeIndex(System.Func! keyAccessor, string? indexName = null) -> Akade.IndexedSet.IndexedSetBuilder! -virtual Akade.IndexedSet.IndexedSetBuilder.WithUniqueIndex(System.Func! keyAccessor, string? indexName = null) -> Akade.IndexedSet.IndexedSetBuilder! \ No newline at end of file +virtual Akade.IndexedSet.IndexedSetBuilder.WithUniqueIndex(System.Func! keyAccessor, string? indexName = null) -> Akade.IndexedSet.IndexedSetBuilder! diff --git a/Akade.IndexedSet/PublicAPI.Unshipped.txt b/Akade.IndexedSet/PublicAPI.Unshipped.txt index 0fa3f45..ab058de 100644 --- a/Akade.IndexedSet/PublicAPI.Unshipped.txt +++ b/Akade.IndexedSet/PublicAPI.Unshipped.txt @@ -1,12 +1 @@ #nullable enable -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Dispose() -> void -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Read(System.Func!, System.Collections.Generic.IEnumerable!>! readFunc) -> System.Collections.Generic.IEnumerable! -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Read(TState state, System.Func!, TState, System.Collections.Generic.IEnumerable!>! readFunc) -> System.Collections.Generic.IEnumerable! -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, System.Action! updateFunc) -> bool -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, TState state, System.Action! updateFunc) -> bool -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, System.Func! updateFunc) -> bool -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TElement element, TState state, System.Func! updateFunc) -> bool -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Contains(TElement element) -> bool -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.Update(TState state, System.Action!, TState>! updateFunc) -> void -Akade.IndexedSet.Concurrency.ConcurrentIndexedSet.TryGetSingle(TPrimaryKey key, out TElement? result) -> bool -Akade.IndexedSet.IndexedSet.TryGetSingle(TPrimaryKey key, out TElement? result) -> bool diff --git a/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Shipped.md b/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Shipped.md index 7ae6c26..49009af 100644 --- a/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Shipped.md +++ b/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Shipped.md @@ -4,6 +4,7 @@ Rule ID | Category | Severity | Notes --------|----------|----------|------- -AkadeIndexedSet0001 | Akade.IndexedSet.IndexNaming | Warning | IndexNamingRulesAnalyzer, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Akade.IndexedSet.Analyzers/Readme.md#AkadeIndexedSet0001) -AkadeIndexedSet0002 | Akade.IndexedSet.IndexNaming | Warning | IndexNamingRulesAnalyzer, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Akade.IndexedSet.Analyzers/Readme.md#AkadeIndexedSet0002) -AkadeIndexedSet0003 | Akade.IndexedSet.IndexNaming | Warning | IndexNamingRulesAnalyzer, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Akade.IndexedSet.Analyzers/Readme.md#AkadeIndexedSet0003) +AkadeIndexedSet0001 | Akade.IndexedSet.IndexNaming | Warning | IndexNamingRulesAnalyzer, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Analyzers/Readme.md#AkadeIndexedSet0001) +AkadeIndexedSet0002 | Akade.IndexedSet.IndexNaming | Warning | IndexNamingRulesAnalyzer, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Analyzers/Readme.md#AkadeIndexedSet0002) +AkadeIndexedSet0003 | Akade.IndexedSet.IndexNaming | Warning | IndexNamingRulesAnalyzer, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Analyzers/Readme.md#AkadeIndexedSet0003) +AkadeIndexedSet0004 | Akade.IndexedSet.ConcurrencyRules | Error | ConcurrentSetUsageAnalyzers, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Analyzers/Readme.md#AkadeIndexedSet0004) diff --git a/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Unshipped.md b/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Unshipped.md index b18cad1..98ca60b 100644 --- a/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Unshipped.md +++ b/Analyzers/Akade.IndexedSet.Analyzers/AnalyzerReleases.Unshipped.md @@ -2,4 +2,3 @@ Rule ID | Category | Severity | Notes --------|----------|----------|------- -AkadeIndexedSet0004 | Akade.IndexedSet.ConcurrencyRules | Error | ConcurrentSetUsageAnalyzers, [Documentation](https://github.com/akade/Akade.IndexedSet/tree/main/Akade.IndexedSet.Analyzers/Readme.md#AkadeIndexedSet0004) \ No newline at end of file