@@ -4,21 +4,26 @@ diagview(a::AbstractDiagonalArray) = throw(MethodError(diagview, Tuple{typeof(a)
44
55using DerivableInterfaces: DerivableInterfaces, @interface
66using SparseArraysBase:
7- SparseArraysBase, AbstractSparseArrayInterface, AbstractSparseArrayStyle # # , StorageIndex, StorageIndices
7+ SparseArraysBase, AbstractSparseArrayInterface, AbstractSparseArrayStyle
88
9- abstract type AbstractDiagonalArrayInterface <: AbstractSparseArrayInterface end
9+ abstract type AbstractDiagonalArrayInterface{N} <: AbstractSparseArrayInterface{N} end
1010
11- struct DiagonalArrayInterface <: AbstractDiagonalArrayInterface end
11+ struct DiagonalArrayInterface{N} <: AbstractDiagonalArrayInterface{N} end
12+ DiagonalArrayInterface {M} (:: Val{N} ) where {M,N} = DiagonalArrayInterface {N} ()
13+ DiagionalArrayInterface (:: Val{N} ) where {N} = DiagonalArrayInterface {N} ()
14+ DiagonalArrayInterface () = DiagonalArrayInterface {Any} ()
1215
13- function DerivableInterfaces. arraytype (:: AbstractDiagonalArrayInterface , elt:: Type )
14- return DiagonalArray{elt}
16+ function Base. similar (:: AbstractDiagonalArrayInterface , elt:: Type , ax:: Tuple )
17+ return similar (DiagonalArray{elt}, ax)
18+ end
19+ function DerivableInterfaces. interface (:: Type{<:AbstractDiagonalArray{<:Any,N}} ) where {N}
20+ return DiagonalArrayInterface {N} ()
1521end
16- DerivableInterfaces. interface (:: Type{<:AbstractDiagonalArray} ) = DiagonalArrayInterface ()
1722
1823abstract type AbstractDiagonalArrayStyle{N} <: AbstractSparseArrayStyle{N} end
1924
20- function DerivableInterfaces. interface (:: Type{<:AbstractDiagonalArrayStyle} )
21- return DiagonalArrayInterface ()
25+ function DerivableInterfaces. interface (:: Type{<:AbstractDiagonalArrayStyle{N}} ) where {N}
26+ return DiagonalArrayInterface {N} ()
2227end
2328
2429struct DiagonalArrayStyle{N} <: AbstractDiagonalArrayStyle{N} end
0 commit comments