119template <
typename ValueT>
126template <
typename ValueT>
127bool StreamVBlockMatrixBuilderT<ValueT>::Filler::isBegin()
129 return (this->m_index == 0);
134template <
typename ValueT>
137 return (this->m_index == this->m_size);
140template <
typename ValueT>
144 return this->m_current_size;
149template <
typename ValueT>
153 return this->m_index;
158template <
typename ValueT>
164 this->m_current_size = this->m_n[0];
165 this->m_current_k = this->m_data_index.data();
166 this->m_current_block_size_row = this->m_block_size_row[0];
167 this->m_current_block_size_col = this->m_block_size_col[0];
172template <
typename ValueT>
173void StreamVBlockMatrixBuilderT<ValueT>::Profiler::addMatrixEntry(
174Integer row_index, Integer col_index)
178 const VBlock* block_sizes = this->m_parent->vblock();
182 this->m_row_index.add(row_index);
183 this->m_col_index.add(col_index);
184 this->m_block_size_row.add(block_sizes->
size(row_index));
185 this->m_block_size_col.add(block_sizes->
size(col_index));
192template <
typename ValueT>
193void StreamVBlockMatrixBuilderT<ValueT>::Filler::addBlockData(ConstArray2View<ValueT> values)
202 Array2View<ValueT> view(
203 this->m_values + *this->m_current_k, values.dim1Size(), values.dim2Size());
205 for (Integer i = 0; i < values.dim1Size(); ++i)
206 for (Integer k = 0; k < values.dim2Size(); ++k)
207 view[i][k] += values[i][k];
214template <
typename ValueT>
215typename StreamVBlockMatrixBuilderT<ValueT>::Filler&
216StreamVBlockMatrixBuilderT<ValueT>::Filler::operator++()
221 this->m_current_k += this->m_current_size;
222 this->m_current_size = this->m_n[this->m_index];
223 this->m_current_block_size_row = this->m_block_size_row[this->m_index];
224 this->m_current_block_size_col = this->m_block_size_col[this->m_index];