27 #if NET_4_0 || UNITY_5_3_OR_NEWER 36 bool keysOrderedInEachPartition;
37 bool keysOrderedAcrossPartitions;
41 bool keysOrderedAcrossPartitions,
42 bool keysNormalized) : base ()
44 this.keysOrderedInEachPartition = keysOrderedInEachPartition;
45 this.keysOrderedAcrossPartitions = keysOrderedAcrossPartitions;
46 this.keysNormalized = keysNormalized;
52 yield
return item.Value;
55 public override IList<IEnumerator<TSource>>
GetPartitions (
int partitionCount)
57 IEnumerator<TSource>[] temp =
new IEnumerator<TSource>[partitionCount];
58 IList<IEnumerator<KeyValuePair<long, TSource>>> enumerators
61 for (
int i = 0; i < enumerators.Count; i++)
62 temp[i] =
new ProxyEnumerator (enumerators[i]);
68 IEnumerator<TSource> GetProxyEnumerator (IEnumerator<KeyValuePair<long, TSource>> enumerator)
70 while (enumerator.MoveNext ())
71 yield
return enumerator.Current.Value;
74 public abstract IList<IEnumerator<KeyValuePair<long, TSource>>>
GetOrderablePartitions(
int partitionCount);
78 if (!SupportsDynamicPartitions)
79 throw new NotSupportedException ();
86 return keysOrderedInEachPartition;
92 return keysOrderedAcrossPartitions;
98 return keysNormalized;
102 class ProxyEnumerator : IEnumerator<TSource>, IDisposable
104 IEnumerator<KeyValuePair<long, TSource>> internalEnumerator;
106 internal ProxyEnumerator (IEnumerator<KeyValuePair<long, TSource>> enumerator)
108 internalEnumerator = enumerator;
111 public void Dispose ()
113 internalEnumerator.Dispose ();
116 public bool MoveNext ()
118 if (!internalEnumerator.MoveNext ())
121 Current = internalEnumerator.Current.Value;
128 internalEnumerator.Reset ();
131 object IEnumerator.Current {
137 public TSource Current {
abstract IList< IEnumerator< KeyValuePair< long, TSource > > > GetOrderablePartitions(int partitionCount)
virtual IEnumerable< KeyValuePair< long, TSource > > GetOrderableDynamicPartitions()
bool KeysOrderedInEachPartition
bool KeysOrderedAcrossPartitions
override IEnumerable< TSource > GetDynamicPartitions()
override IList< IEnumerator< TSource > > GetPartitions(int partitionCount)
OrderablePartitioner(bool keysOrderedInEachPartition, bool keysOrderedAcrossPartitions, bool keysNormalized)