@@ -75,6 +75,30 @@ function BlockSparseArray{T,N,A}(
7575 return BlockSparseArray {T,N,A} (blocks, axes)
7676end
7777
78+ function BlockSparseArray {T,N,A} (
79+ axes:: Vararg{AbstractUnitRange,N}
80+ ) where {T,N,A<: AbstractArray{T,N} }
81+ return BlockSparseArray {T,N,A} (axes)
82+ end
83+
84+ function BlockSparseArray {T,N,A} (
85+ dims:: Tuple{Vararg{Vector{Int},N}}
86+ ) where {T,N,A<: AbstractArray{T,N} }
87+ return BlockSparseArray {T,N,A} (blockedrange .(dims))
88+ end
89+
90+ # Fix ambiguity error.
91+ function BlockSparseArray {T,0,A} (axes:: Tuple{} ) where {T,A<: AbstractArray{T,0} }
92+ blocks = default_blocks (A, axes)
93+ return BlockSparseArray {T,0,A} (blocks, axes)
94+ end
95+
96+ function BlockSparseArray {T,N,A} (
97+ dims:: Vararg{Vector{Int},N}
98+ ) where {T,N,A<: AbstractArray{T,N} }
99+ return BlockSparseArray {T,N,A} (dims)
100+ end
101+
78102function BlockSparseArray {T,N} (axes:: Tuple{Vararg{AbstractUnitRange,N}} ) where {T,N}
79103 return BlockSparseArray {T,N,default_arraytype(T, axes)} (axes)
80104end
@@ -119,56 +143,25 @@ function BlockSparseArray{T}() where {T}
119143 return BlockSparseArray {T} (())
120144end
121145
122- function BlockSparseArray {T,N,A} (
123- :: UndefInitializer , dims:: Tuple
124- ) where {T,N,A<: AbstractArray{T,N} }
125- return BlockSparseArray {T,N,A} (dims)
126- end
127-
128146# undef
129- function BlockSparseArray {T,N} (
130- :: UndefInitializer , axes:: Tuple{Vararg{AbstractUnitRange,N}}
131- ) where {T,N}
132- return BlockSparseArray {T,N} (axes)
133- end
134-
135- function BlockSparseArray {T,N} (
136- :: UndefInitializer , axes:: Vararg{AbstractUnitRange,N}
137- ) where {T,N}
138- return BlockSparseArray {T,N} (axes)
139- end
140-
141- function BlockSparseArray {T,N} (
142- :: UndefInitializer , dims:: Tuple{Vararg{Vector{Int},N}}
143- ) where {T,N}
144- return BlockSparseArray {T,N} (dims)
145- end
146-
147- function BlockSparseArray {T,N} (:: UndefInitializer , dims:: Vararg{Vector{Int},N} ) where {T,N}
148- return BlockSparseArray {T,N} (dims)
149- end
150-
151- function BlockSparseArray {T} (
152- :: UndefInitializer , axes:: Tuple{Vararg{AbstractUnitRange}}
153- ) where {T}
154- return BlockSparseArray {T} (axes)
155- end
156-
157- function BlockSparseArray {T} (:: UndefInitializer , axes:: Vararg{AbstractUnitRange} ) where {T}
158- return BlockSparseArray {T} (axes... )
147+ function BlockSparseArray {T,N,A,Blocks} (
148+ :: UndefInitializer , args...
149+ ) where {T,N,A<: AbstractArray{T,N} ,Blocks<: AbstractArray{A,N} }
150+ return BlockSparseArray {T,N,A,Blocks} (args... )
159151end
160152
161- # Fix ambiguity error.
162- function BlockSparseArray {T} (:: UndefInitializer ) where {T}
163- return BlockSparseArray {T} ()
153+ function BlockSparseArray {T,N,A} (
154+ :: UndefInitializer , args...
155+ ) where {T,N,A<: AbstractArray{T,N} }
156+ return BlockSparseArray {T,N,A} (args... )
164157end
165158
166- function BlockSparseArray {T} (:: UndefInitializer , dims :: Tuple{Vararg{Vector{Int}}} ) where {T}
167- return BlockSparseArray {T} (dims )
159+ function BlockSparseArray {T,N } (:: UndefInitializer , args ... ) where {T,N }
160+ return BlockSparseArray {T,N} (args ... )
168161end
169162
170- function BlockSparseArray {T} (:: UndefInitializer , dims :: Vararg{Vector{Int}} ) where {T}
171- return BlockSparseArray {T} (dims ... )
163+ function BlockSparseArray {T} (:: UndefInitializer , args ... ) where {T}
164+ return BlockSparseArray {T} (args ... )
172165end
173166
174167# Base `AbstractArray` interface
0 commit comments