Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
OrderedGroupJoinHashLookupBuilder.cs
Go to the documentation of this file.
3
5
6internal sealed class OrderedGroupJoinHashLookupBuilder<TElement, TOrderKey, THashKey> : HashLookupBuilder<IEnumerable<TElement>, Pair<bool, TOrderKey>, THashKey>
7{
8 private struct OrderedGroupJoinBaseHashBuilder : IBaseHashBuilder<TElement, TOrderKey>
9 {
11
13
19
20 public bool Add(THashKey hashKey, TElement element, TOrderKey orderKey)
21 {
22 bool result = true;
23 GroupKeyData value = null;
25 {
28 result = false;
29 }
30 value._grouping.Add(element, orderKey);
31 if (_orderKeyComparer.Compare(orderKey, value._orderKey) < 0)
32 {
33 value._orderKey = orderKey;
34 }
35 return result;
36 }
37 }
38
39 private sealed class OrderedGroupJoinHashLookup : GroupJoinHashLookup<THashKey, TElement, GroupKeyData, Pair<bool, TOrderKey>>
40 {
42
47
52
54 {
55 return new Pair<bool, TOrderKey>(first: true, orderKey);
56 }
57 }
58
71
73
75
77
84
95}
bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
void Add(TKey key, TValue value)
GroupKeyData(TOrderKey orderKey, THashKey hashKey, IComparer< TOrderKey > orderComparer)
override Pair< IEnumerable< TElement >, Pair< bool, TOrderKey > > CreateValuePair(GroupKeyData baseValue)
OrderedGroupJoinHashLookupBuilder(QueryOperatorEnumerator< Pair< TElement, THashKey >, TOrderKey > dataSource, IEqualityComparer< THashKey > keyComparer, IComparer< TOrderKey > orderKeyComparer)
override HashJoinHashLookup< THashKey, IEnumerable< TElement >, Pair< bool, TOrderKey > > BuildHashLookup(CancellationToken cancellationToken)
readonly QueryOperatorEnumerator< Pair< TElement, THashKey >, TOrderKey > _dataSource
OrderedGroupJoinBaseHashBuilder(HashLookup< THashKey, GroupKeyData > baseLookup, IComparer< TOrderKey > orderKeyComparer)