Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
FileSystemEnumerable.cs
Go to the documentation of this file.
1
using
System.Collections
;
2
using
System.Collections.Generic
;
3
using
System.Threading
;
4
5
namespace
System.IO.Enumeration
;
6
7
public
class
FileSystemEnumerable
<
TResult
> :
IEnumerable
<TResult>,
IEnumerable
8
{
9
public
delegate
bool
FindPredicate
(
ref
FileSystemEntry
entry
);
10
11
public
delegate
TResult
FindTransform
(
ref
FileSystemEntry
entry
);
12
13
private
sealed
class
DelegateEnumerator
:
FileSystemEnumerator
<TResult>
14
{
15
private
readonly
FileSystemEnumerable<TResult>
_enumerable
;
16
17
public
DelegateEnumerator
(
FileSystemEnumerable<TResult>
enumerable,
bool
isNormalized
)
18
:
base
(enumerable.
_directory
,
isNormalized
, enumerable.
_options
)
19
{
20
_enumerable
= enumerable;
21
}
22
23
protected
override
TResult
TransformEntry
(
ref
FileSystemEntry
entry
)
24
{
25
return
_enumerable
._transform(
ref
entry
);
26
}
27
28
protected
override
bool
ShouldRecurseIntoEntry
(
ref
FileSystemEntry
entry
)
29
{
30
return
_enumerable
.ShouldRecursePredicate?.Invoke(
ref
entry
) ??
true
;
31
}
32
33
protected
override
bool
ShouldIncludeEntry
(
ref
FileSystemEntry
entry
)
34
{
35
return
_enumerable
.ShouldIncludePredicate?.Invoke(
ref
entry
) ??
true
;
36
}
37
}
38
39
private
DelegateEnumerator
_enumerator
;
40
41
private
readonly
FindTransform
_transform
;
42
43
private
readonly
EnumerationOptions
_options
;
44
45
private
readonly
string
_directory
;
46
47
public
FindPredicate
?
ShouldIncludePredicate
{
get
;
set
; }
48
49
public
FindPredicate
?
ShouldRecursePredicate
{
get
;
set
; }
50
51
public
FileSystemEnumerable
(
string
directory
,
FindTransform
transform,
EnumerationOptions
?
options
=
null
)
52
:
this
(
directory
, transform,
options
,
isNormalized
:
false
)
53
{
54
}
55
56
internal
FileSystemEnumerable
(
string
directory
,
FindTransform
transform,
EnumerationOptions
options
,
bool
isNormalized
)
57
{
58
_directory
=
directory
??
throw
new
ArgumentNullException
(
"directory"
);
59
_transform
= transform ??
throw
new
ArgumentNullException
(
"transform"
);
60
_options
=
options
??
EnumerationOptions
.
Default
;
61
_enumerator
=
new
DelegateEnumerator
(
this
,
isNormalized
);
62
}
63
64
public
IEnumerator<TResult>
GetEnumerator
()
65
{
66
return
Interlocked
.
Exchange
(
ref
_enumerator
,
null
) ??
new
DelegateEnumerator
(
this
,
isNormalized
:
false
);
67
}
68
69
IEnumerator
IEnumerable
.
GetEnumerator
()
70
{
71
return
GetEnumerator
();
72
}
73
}
System.ArgumentNullException
Definition
ArgumentNullException.cs:10
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
System.IO.EnumerationOptions.Default
static EnumerationOptions Default
Definition
EnumerationOptions.cs:24
System.IO.EnumerationOptions
Definition
EnumerationOptions.cs:4
System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.ShouldRecurseIntoEntry
override bool ShouldRecurseIntoEntry(ref FileSystemEntry entry)
Definition
FileSystemEnumerable.cs:28
System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.ShouldIncludeEntry
override bool ShouldIncludeEntry(ref FileSystemEntry entry)
Definition
FileSystemEnumerable.cs:33
System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.DelegateEnumerator
DelegateEnumerator(FileSystemEnumerable< TResult > enumerable, bool isNormalized)
Definition
FileSystemEnumerable.cs:17
System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.TransformEntry
override TResult TransformEntry(ref FileSystemEntry entry)
Definition
FileSystemEnumerable.cs:23
System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator._enumerable
readonly FileSystemEnumerable< TResult > _enumerable
Definition
FileSystemEnumerable.cs:15
System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator
Definition
FileSystemEnumerable.cs:14
System.IO.Enumeration.FileSystemEnumerable.GetEnumerator
IEnumerator< TResult > GetEnumerator()
Definition
FileSystemEnumerable.cs:64
System.IO.Enumeration.FileSystemEnumerable._directory
readonly string _directory
Definition
FileSystemEnumerable.cs:45
System.IO.Enumeration.FileSystemEnumerable.FileSystemEnumerable
FileSystemEnumerable(string directory, FindTransform transform, EnumerationOptions? options=null)
Definition
FileSystemEnumerable.cs:51
System.IO.Enumeration.FileSystemEnumerable._transform
readonly FindTransform _transform
Definition
FileSystemEnumerable.cs:41
System.IO.Enumeration.FileSystemEnumerable._options
readonly EnumerationOptions _options
Definition
FileSystemEnumerable.cs:43
System.IO.Enumeration.FileSystemEnumerable.ShouldIncludePredicate
FindPredicate? ShouldIncludePredicate
Definition
FileSystemEnumerable.cs:47
System.IO.Enumeration.FileSystemEnumerable.ShouldRecursePredicate
FindPredicate? ShouldRecursePredicate
Definition
FileSystemEnumerable.cs:49
System.IO.Enumeration.FileSystemEnumerable.FindTransform
delegate TResult FindTransform(ref FileSystemEntry entry)
System.IO.Enumeration.FileSystemEnumerable._enumerator
DelegateEnumerator _enumerator
Definition
FileSystemEnumerable.cs:39
System.IO.Enumeration.FileSystemEnumerable.FileSystemEnumerable
FileSystemEnumerable(string directory, FindTransform transform, EnumerationOptions options, bool isNormalized)
Definition
FileSystemEnumerable.cs:56
System.IO.Enumeration.FileSystemEnumerable.FindPredicate
delegate bool FindPredicate(ref FileSystemEntry entry)
System.IO.Enumeration.FileSystemEnumerable
Definition
FileSystemEnumerable.cs:8
System.IO.Enumeration.FileSystemEnumerator._options
readonly EnumerationOptions _options
Definition
FileSystemEnumerator.cs:18
System.IO.Enumeration.FileSystemEnumerator
Definition
FileSystemEnumerator.cs:11
System.Threading.Interlocked.Exchange
static int Exchange(ref int location1, int value)
System.Threading.Interlocked
Definition
Interlocked.cs:9
TResult
System.Collections.Generic.IEnumerable.GetEnumerator
new IEnumerator< T > GetEnumerator()
System.Collections.Generic.IEnumerable
Definition
IEnumerable.cs:4
System.Collections.Generic.IEnumerator
Definition
IEnumerator.cs:4
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.Collections
Definition
BlockingCollection.cs:8
System.IO.Enumeration
Definition
FileSystemEntry.cs:1
System.Threading
Definition
TaskToApm.cs:3
System.ExceptionArgument.options
@ options
System.IO.Enumeration.FileSystemEntry
Definition
FileSystemEntry.cs:4
source
System.Private.CoreLib
System.IO.Enumeration
FileSystemEnumerable.cs
Generated by
1.10.0