@@ -25,7 +25,8 @@ DiskArrays.batchstrategy(a::AccessCountDiskArray) = a.batchstrategy
25
25
AccessCountDiskArray (a; chunksize= size (a), batchstrategy= DiskArrays. ChunkRead (DiskArrays. NoStepRange (), 0.5 )) =
26
26
AccessCountDiskArray ([], [], a, chunksize, batchstrategy)
27
27
28
- Base. size (a:: AccessCountDiskArray ) = size (a. parent)
28
+ Base. parent (a:: AccessCountDiskArray ) = a. parent
29
+ Base. size (a:: AccessCountDiskArray ) = size (parent (a))
29
30
30
31
# Apply the all in one macro rather than inheriting
31
32
@@ -38,7 +39,7 @@ function DiskArrays.readblock!(a::AccessCountDiskArray, aout, i::OrdinalRange...
38
39
end
39
40
# println("reading from indices ", join(string.(i)," "))
40
41
push! (a. getindex_log, i)
41
- return aout .= a . parent[i... ]
42
+ return aout .= parent (a) [i... ]
42
43
end
43
44
function DiskArrays. writeblock! (a:: AccessCountDiskArray , v, i:: OrdinalRange... )
44
45
ndims (a) == length (i) || error (" Number of indices is not correct" )
@@ -47,31 +48,30 @@ function DiskArrays.writeblock!(a::AccessCountDiskArray, v, i::OrdinalRange...)
47
48
end
48
49
# println("Writing to indices ", join(string.(i)," "))
49
50
push! (a. setindex_log, i)
50
- return view (a . parent, i... ) .= v
51
+ return view (parent (a) , i... ) .= v
51
52
end
52
53
53
54
getindex_count (a:: AccessCountDiskArray ) = length (a. getindex_log)
54
55
setindex_count (a:: AccessCountDiskArray ) = length (a. setindex_log)
55
56
getindex_log (a:: AccessCountDiskArray ) = a. getindex_log
56
57
setindex_log (a:: AccessCountDiskArray ) = a. setindex_log
57
- trueparent (a:: AccessCountDiskArray ) = a. parent
58
-
59
- getindex_count (a:: DiskArrays.ReshapedDiskArray ) = getindex_count (a. parent)
60
- setindex_count (a:: DiskArrays.ReshapedDiskArray ) = setindex_count (a. parent)
61
- getindex_log (a:: DiskArrays.ReshapedDiskArray ) = getindex_log (a. parent)
62
- setindex_log (a:: DiskArrays.ReshapedDiskArray ) = setindex_log (a. parent)
63
- trueparent (a:: DiskArrays.ReshapedDiskArray ) = trueparent (a. parent)
64
-
65
- getindex_count (a:: DiskArrays.PermutedDiskArray ) = getindex_count (a. a. parent)
66
- setindex_count (a:: DiskArrays.PermutedDiskArray ) = setindex_count (a. a. parent)
67
- getindex_log (a:: DiskArrays.PermutedDiskArray ) = getindex_log (a. a. parent)
68
- setindex_log (a:: DiskArrays.PermutedDiskArray ) = setindex_log (a. a. parent)
69
- function trueparent (
70
- a:: DiskArrays.PermutedDiskArray{T,N,<:PermutedDimsArray{T,N,perm,iperm}}
71
- ) where {T,N,perm,iperm}
72
- return permutedims (trueparent (a. a. parent), perm)
58
+ trueparent (a:: AccessCountDiskArray ) = parent (a)
59
+
60
+ getindex_count (a:: DiskArrays.AbstractDiskArray ) = getindex_count (parent (a))
61
+ setindex_count (a:: DiskArrays.AbstractDiskArray ) = setindex_count (parent (a))
62
+ getindex_log (a:: DiskArrays.AbstractDiskArray ) = getindex_log (parent (a))
63
+ setindex_log (a:: DiskArrays.AbstractDiskArray ) = setindex_log (parent (a))
64
+ function trueparent (a:: DiskArrays.AbstractDiskArray )
65
+ if parent (a) === a
66
+ a
67
+ else
68
+ trueparent (parent (a))
69
+ end
73
70
end
74
71
72
+ trueparent (a:: DiskArrays.PermutedDiskArray{T,N,perm,iperm} ) where {T,N,perm,iperm} =
73
+ permutedims (trueparent (parent (a)), perm)
74
+
75
75
"""
76
76
ChunkedDiskArray(A; chunksize)
77
77
@@ -83,29 +83,31 @@ struct ChunkedDiskArray{T,N,A<:AbstractArray{T,N}} <: DiskArrays.AbstractDiskArr
83
83
end
84
84
ChunkedDiskArray (a; chunksize= size (a)) = ChunkedDiskArray (a, chunksize)
85
85
86
- Base. size (a:: ChunkedDiskArray ) = size (a. parent)
86
+ Base. parent (a:: ChunkedDiskArray ) = a. parent
87
+ Base. size (a:: ChunkedDiskArray ) = size (parent (a))
87
88
88
89
DiskArrays. haschunks (:: ChunkedDiskArray ) = DiskArrays. Chunked ()
89
90
DiskArrays. eachchunk (a:: ChunkedDiskArray ) = DiskArrays. GridChunks (a, a. chunksize)
90
- DiskArrays. readblock! (a:: ChunkedDiskArray , aout, i:: AbstractUnitRange... ) = aout .= a . parent[i... ]
91
- DiskArrays. writeblock! (a:: ChunkedDiskArray , v, i:: AbstractUnitRange... ) = view (a . parent, i... ) .= v
91
+ DiskArrays. readblock! (a:: ChunkedDiskArray , aout, i:: AbstractUnitRange... ) = aout .= parent (a) [i... ]
92
+ DiskArrays. writeblock! (a:: ChunkedDiskArray , v, i:: AbstractUnitRange... ) = view (parent (a) , i... ) .= v
92
93
93
94
"""
94
95
UnchunkedDiskArray(A)
95
96
96
97
A disk array without chunking, that can wrap any other `AbstractArray`.
97
98
"""
98
99
struct UnchunkedDiskArray{T,N,P<: AbstractArray{T,N} } <: DiskArrays.AbstractDiskArray{T,N}
99
- p :: P
100
+ parent :: P
100
101
end
101
102
102
- Base. size (a:: UnchunkedDiskArray ) = size (a. p)
103
+ Base. parent (a:: UnchunkedDiskArray ) = a. parent
104
+ Base. size (a:: UnchunkedDiskArray ) = size (parent (a))
103
105
104
106
DiskArrays. haschunks (:: UnchunkedDiskArray ) = DiskArrays. Unchunked ()
105
107
function DiskArrays. readblock! (a:: UnchunkedDiskArray , aout, i:: AbstractUnitRange... )
106
108
ndims (a) == length (i) || error (" Number of indices is not correct" )
107
109
all (r -> isa (r, AbstractUnitRange), i) || error (" Not all indices are unit ranges" )
108
- return aout .= a . p [i... ]
110
+ return aout .= parent (a) [i... ]
109
111
end
110
112
111
113
end
0 commit comments