@@ -24,3 +24,28 @@ using LinearAlgebra: LinearAlgebra
2424# which is where matrix multiplication and factorizations
2525# should go.
2626@derive AnyAbstractSparseArray AbstractArrayOps
27+ const MIMEtextplain = MIME " text/plain"
28+ @derive (T= AnyAbstractSparseArray,) begin
29+ Base. show (:: IO , :: MIMEtextplain , :: T )
30+ end
31+
32+ # Wraps a sparse array but replaces the unstored values.
33+ # This is used in printing in order to customize printing
34+ # of zero/unstored values.
35+ struct ReplacedUnstoredSparseArray{T,N,F,Parent<: AbstractArray{T,N} } < :
36+ AbstractSparseArray{T,N}
37+ parent:: Parent
38+ getunstoredindex:: F
39+ end
40+ Base. parent (a:: ReplacedUnstoredSparseArray ) = a. parent
41+ Base. size (a:: ReplacedUnstoredSparseArray ) = size (parent (a))
42+ function isstored (a:: ReplacedUnstoredSparseArray , I:: Int... )
43+ return isstored (parent (a), I... )
44+ end
45+ function getstoredindex (a:: ReplacedUnstoredSparseArray , I:: Int... )
46+ return getstoredindex (parent (a), I... )
47+ end
48+ function getunstoredindex (a:: ReplacedUnstoredSparseArray , I:: Int... )
49+ return a. getunstoredindex (a, I... )
50+ end
51+ @derive ReplacedUnstoredSparseArray AbstractArrayOps
0 commit comments