Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
RangeEnumerable.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
3
namespace
System.Linq.Parallel
;
4
5
internal
sealed
class
RangeEnumerable
:
ParallelQuery
<int>,
IParallelPartitionable
<int>
6
{
7
private
sealed
class
RangeEnumerator
:
QueryOperatorEnumerator
<int, int>
8
{
9
private
readonly
int
_from
;
10
11
private
readonly
int
_count
;
12
13
private
readonly
int
_initialIndex
;
14
15
private
Shared<int>
_currentCount
;
16
17
internal
RangeEnumerator
(
int
from
,
int
count
,
int
initialIndex
)
18
{
19
_from
=
from
;
20
_count
=
count
;
21
_initialIndex
=
initialIndex
;
22
}
23
24
internal
override
bool
MoveNext
(
ref
int
currentElement
,
ref
int
currentKey)
25
{
26
if
(
_currentCount
==
null
)
27
{
28
_currentCount
=
new
Shared<int>
(-1);
29
}
30
int
num = _currentCount.Value + 1;
31
if
(num <
_count
)
32
{
33
_currentCount.Value = num;
34
currentElement
= num +
_from
;
35
currentKey = num +
_initialIndex
;
36
return
true
;
37
}
38
return
false
;
39
}
40
41
internal
override
void
Reset
()
42
{
43
_currentCount
=
null
;
44
}
45
}
46
47
private
readonly
int
_from
;
48
49
private
readonly
int
_count
;
50
51
internal
RangeEnumerable
(
int
from
,
int
count
)
52
:
base
(
QuerySettings
.
Empty
)
53
{
54
_from
=
from
;
55
_count
=
count
;
56
}
57
58
public
QueryOperatorEnumerator<int, int>
[]
GetPartitions
(
int
partitionCount
)
59
{
60
int
num =
_count
/
partitionCount
;
61
int
num2
=
_count
%
partitionCount
;
62
int
num3
= 0;
63
QueryOperatorEnumerator<int, int>
[]
array
=
new
QueryOperatorEnumerator<int, int>
[
partitionCount
];
64
for
(
int
i = 0; i <
partitionCount
; i++)
65
{
66
int
num4
= ((i <
num2
) ? (num + 1) : num);
67
array
[i] =
new
RangeEnumerator
(
_from
+
num3
,
num4
,
num3
);
68
num3
+=
num4
;
69
}
70
return
array
;
71
}
72
73
public
override
IEnumerator<int>
GetEnumerator
()
74
{
75
return
new
RangeEnumerator
(
_from
,
_count
, 0).
AsClassicEnumerator
();
76
}
77
}
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
System.Empty
Definition
Empty.cs:4
System.Linq.ParallelQuery
Definition
ParallelQuery.cs:43
System.Linq.Parallel.QueryOperatorEnumerator.AsClassicEnumerator
IEnumerator< TElement > AsClassicEnumerator()
Definition
QueryOperatorEnumerator.cs:57
System.Linq.Parallel.QueryOperatorEnumerator
Definition
QueryOperatorEnumerator.cs:8
System.Linq.Parallel.RangeEnumerable.RangeEnumerator._currentCount
Shared< int > _currentCount
Definition
RangeEnumerable.cs:15
System.Linq.Parallel.RangeEnumerable.RangeEnumerator._from
readonly int _from
Definition
RangeEnumerable.cs:9
System.Linq.Parallel.RangeEnumerable.RangeEnumerator._initialIndex
readonly int _initialIndex
Definition
RangeEnumerable.cs:13
System.Linq.Parallel.RangeEnumerable.RangeEnumerator.Reset
override void Reset()
Definition
RangeEnumerable.cs:41
System.Linq.Parallel.RangeEnumerable.RangeEnumerator.RangeEnumerator
RangeEnumerator(int from, int count, int initialIndex)
Definition
RangeEnumerable.cs:17
System.Linq.Parallel.RangeEnumerable.RangeEnumerator.MoveNext
override bool MoveNext(ref int currentElement, ref int currentKey)
Definition
RangeEnumerable.cs:24
System.Linq.Parallel.RangeEnumerable.RangeEnumerator._count
readonly int _count
Definition
RangeEnumerable.cs:11
System.Linq.Parallel.RangeEnumerable.RangeEnumerator
Definition
RangeEnumerable.cs:8
System.Linq.Parallel.RangeEnumerable._from
readonly int _from
Definition
RangeEnumerable.cs:47
System.Linq.Parallel.RangeEnumerable.GetEnumerator
override IEnumerator< int > GetEnumerator()
Definition
RangeEnumerable.cs:73
System.Linq.Parallel.RangeEnumerable.RangeEnumerable
RangeEnumerable(int from, int count)
Definition
RangeEnumerable.cs:51
System.Linq.Parallel.RangeEnumerable.GetPartitions
QueryOperatorEnumerator< int, int >[] GetPartitions(int partitionCount)
Definition
RangeEnumerable.cs:58
System.Linq.Parallel.RangeEnumerable._count
readonly int _count
Definition
RangeEnumerable.cs:49
System.Linq.Parallel.RangeEnumerable
Definition
RangeEnumerable.cs:6
System.Linq.Parallel.IParallelPartitionable
Definition
IParallelPartitionable.cs:4
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.Linq.Parallel
Definition
AnyAllSearchOperator.cs:5
System.Linq.ExceptionArgument.count
@ count
System.ExceptionArgument.array
@ array
System.Linq.Parallel.QuerySettings
Definition
QuerySettings.cs:7
source
System.Linq.Parallel
System.Linq.Parallel
RangeEnumerable.cs
Generated by
1.10.0