@@ -183,19 +183,27 @@ function Base.convert(
183183 )
184184end
185185
186+ _indexing (A:: MutableSparseMatrixCSC ) = A. indexing
187+ _indexing (:: SparseArrays.SparseMatrixCSC ) = OneBasedIndexing ()
188+
189+ const _SparseMatrixCSC{Tv,Ti} = Union{
190+ MutableSparseMatrixCSC{Tv,Ti},
191+ SparseArrays. SparseMatrixCSC{Tv,Ti}
192+ }
193+
186194function _first_in_column (
187- A:: MutableSparseMatrixCSC ,
195+ A:: _SparseMatrixCSC ,
188196 row:: Integer ,
189197 col:: Integer ,
190198)
191199 range = SparseArrays. nzrange (A, col)
192- row = _shift (row, OneBasedIndexing (), A . indexing )
200+ row = _shift (row, OneBasedIndexing (), _indexing (A) )
193201 idx = searchsortedfirst (view (A. rowval, range), row)
194202 return get (range, idx, last (range) + 1 )
195203end
196204
197205function extract_function (
198- A:: MutableSparseMatrixCSC {T} ,
206+ A:: _SparseMatrixCSC {T} ,
199207 row:: Integer ,
200208 constant:: T ,
201209) where {T}
@@ -205,7 +213,7 @@ function extract_function(
205213 if idx > last (SparseArrays. nzrange (A, col))
206214 continue
207215 end
208- r = _shift (A. rowval[idx], A . indexing , OneBasedIndexing ())
216+ r = _shift (A. rowval[idx], _indexing (A) , OneBasedIndexing ())
209217 if r == row
210218 push! (
211219 func. terms,
@@ -217,7 +225,7 @@ function extract_function(
217225end
218226
219227function extract_function (
220- A:: MutableSparseMatrixCSC {T} ,
228+ A:: _SparseMatrixCSC {T} ,
221229 rows:: UnitRange ,
222230 constants:: Vector{T} ,
223231) where {T}
@@ -231,7 +239,7 @@ function extract_function(
231239 if idx[col] > last (SparseArrays. nzrange (A, col))
232240 continue
233241 end
234- row = _shift (A. rowval[idx[col]], A . indexing , OneBasedIndexing ())
242+ row = _shift (A. rowval[idx[col]], _indexing (A) , OneBasedIndexing ())
235243 if row != rows[output_index]
236244 continue
237245 end
0 commit comments