1#ifndef TATAMI_FORCED_DENSE_HPP
2#define TATAMI_FORCED_DENSE_HPP
32template<
typename Value_,
typename Index_>
41 std::shared_ptr<const Matrix<Value_, Index_> > my_matrix;
44 Index_
nrow()
const {
return my_matrix->nrow(); }
46 Index_
ncol()
const {
return my_matrix->ncol(); }
50 bool uses_oracle(
const bool row)
const {
return my_matrix->uses_oracle(row); }
66 std::unique_ptr<MyopicDenseExtractor<Value_, Index_> >
dense(
const bool row,
const Options& opt)
const {
67 return my_matrix->dense(row, opt);
70 std::unique_ptr<MyopicDenseExtractor<Value_, Index_> >
dense(
const bool row,
const Index_ block_start,
const Index_ block_length,
const Options& opt)
const {
71 return my_matrix->dense(row, block_start, block_length, opt);
75 return my_matrix->dense(row, std::move(indices_ptr), opt);
82 std::unique_ptr<MyopicSparseExtractor<Value_, Index_> >
sparse(
const bool row,
const Options& opt)
const {
83 return my_matrix->sparse(row, opt);
86 std::unique_ptr<MyopicSparseExtractor<Value_, Index_> >
sparse(
const bool row,
const Index_ block_start,
const Index_ block_length,
const Options& opt)
const {
87 return my_matrix->sparse(row, block_start, block_length, opt);
91 return my_matrix->sparse(row, indices_ptr, opt);
98 std::unique_ptr<OracularDenseExtractor<Value_, Index_> >
dense(
103 return my_matrix->dense(row, std::move(oracle), opt);
106 std::unique_ptr<OracularDenseExtractor<Value_, Index_> >
dense(
109 const Index_ block_start,
110 const Index_ block_length,
113 return my_matrix->dense(row, std::move(oracle), block_start, block_length, opt);
116 std::unique_ptr<OracularDenseExtractor<Value_, Index_> >
dense(
122 return my_matrix->dense(row, std::move(oracle), std::move(indices_ptr), opt);
129 std::unique_ptr<OracularSparseExtractor<Value_, Index_> >
sparse(
134 return my_matrix->sparse(row, std::move(oracle), opt);
137 std::unique_ptr<OracularSparseExtractor<Value_, Index_> >
sparse(
140 const Index_ block_start,
141 const Index_ block_length,
144 return my_matrix->sparse(row, std::move(oracle), block_start, block_length, opt);
147 std::unique_ptr<OracularSparseExtractor<Value_, Index_> >
sparse(
153 return my_matrix->sparse(row, std::move(oracle), std::move(indices_ptr), opt);
Virtual class for a matrix of some numeric type.
Forced dense representation.
Definition ForcedDense.hpp:33
std::unique_ptr< OracularDenseExtractor< Value_, Index_ > > dense(const bool row, std::shared_ptr< const Oracle< Index_ > > oracle, const Options &opt) const
Definition ForcedDense.hpp:98
std::unique_ptr< MyopicDenseExtractor< Value_, Index_ > > dense(const bool row, const Index_ block_start, const Index_ block_length, const Options &opt) const
Definition ForcedDense.hpp:70
bool prefer_rows() const
Definition ForcedDense.hpp:48
double prefer_rows_proportion() const
Definition ForcedDense.hpp:56
std::unique_ptr< MyopicDenseExtractor< Value_, Index_ > > dense(const bool row, VectorPtr< Index_ > indices_ptr, const Options &opt) const
Definition ForcedDense.hpp:74
std::unique_ptr< OracularDenseExtractor< Value_, Index_ > > dense(const bool row, std::shared_ptr< const Oracle< Index_ > > oracle, VectorPtr< Index_ > indices_ptr, const Options &opt) const
Definition ForcedDense.hpp:116
double is_sparse_proportion() const
Definition ForcedDense.hpp:54
std::unique_ptr< MyopicSparseExtractor< Value_, Index_ > > sparse(const bool row, VectorPtr< Index_ > indices_ptr, const Options &opt) const
Definition ForcedDense.hpp:90
std::unique_ptr< OracularSparseExtractor< Value_, Index_ > > sparse(const bool row, std::shared_ptr< const Oracle< Index_ > > oracle, const Options &opt) const
Definition ForcedDense.hpp:129
std::unique_ptr< OracularSparseExtractor< Value_, Index_ > > sparse(const bool row, std::shared_ptr< const Oracle< Index_ > > oracle, const Index_ block_start, const Index_ block_length, const Options &opt) const
Definition ForcedDense.hpp:137
std::unique_ptr< OracularSparseExtractor< Value_, Index_ > > sparse(const bool row, std::shared_ptr< const Oracle< Index_ > > oracle, VectorPtr< Index_ > indices_ptr, const Options &opt) const
Definition ForcedDense.hpp:147
std::unique_ptr< MyopicSparseExtractor< Value_, Index_ > > sparse(const bool row, const Index_ block_start, const Index_ block_length, const Options &opt) const
Definition ForcedDense.hpp:86
Index_ nrow() const
Definition ForcedDense.hpp:44
std::unique_ptr< MyopicSparseExtractor< Value_, Index_ > > sparse(const bool row, const Options &opt) const
Definition ForcedDense.hpp:82
std::unique_ptr< MyopicDenseExtractor< Value_, Index_ > > dense(const bool row, const Options &opt) const
Definition ForcedDense.hpp:66
ForcedDense(std::shared_ptr< const Matrix< Value_, Index_ > > matrix)
Definition ForcedDense.hpp:38
Index_ ncol() const
Definition ForcedDense.hpp:46
bool uses_oracle(const bool row) const
Definition ForcedDense.hpp:50
std::unique_ptr< OracularDenseExtractor< Value_, Index_ > > dense(const bool row, std::shared_ptr< const Oracle< Index_ > > oracle, const Index_ block_start, const Index_ block_length, const Options &opt) const
Definition ForcedDense.hpp:106
bool is_sparse() const
Definition ForcedDense.hpp:52
Virtual class for a matrix.
Definition Matrix.hpp:59
Predict future access requests on the target dimension.
Definition Oracle.hpp:29
Flexible representations for matrix data.
Definition Extractor.hpp:15
std::shared_ptr< const std::vector< Index_ > > VectorPtr
Definition Matrix.hpp:26
Options for accessing data from a Matrix instance.
Definition Options.hpp:30