tatami_test
Utilities for testing tatami libraries
Loading...
Searching...
No Matches
ForcedOracleWrapper.hpp
Go to the documentation of this file.
1#ifndef TATAMI_TEST_FORCED_ORACLE_WRAPPER_HPP
2#define TATAMI_TEST_FORCED_ORACLE_WRAPPER_HPP
3
6
7#include <algorithm>
8#include <memory>
9
15namespace tatami_test {
16
27template<typename Value_, typename Index_>
28class ForcedOracleWrapper final : public tatami::Matrix<Value_, Index_> {
29public:
34 ForcedOracleWrapper(std::shared_ptr<const tatami::Matrix<Value_, Index_> > matrix) : my_matrix(std::move(matrix)) {}
35
36private:
37 std::shared_ptr<const tatami::Matrix<Value_, Index_> > my_matrix;
38
39public:
40 Index_ nrow() const {
41 return my_matrix->nrow();
42 }
43
44 Index_ ncol() const {
45 return my_matrix->ncol();
46 }
47
48 bool is_sparse() const {
49 return my_matrix->is_sparse();
50 }
51
52 double is_sparse_proportion() const {
53 return my_matrix->is_sparse_proportion();
54 }
55
56 bool prefer_rows() const {
57 return my_matrix->prefer_rows();
58 }
59
60 double prefer_rows_proportion() const {
61 return my_matrix->prefer_rows_proportion();
62 }
63
64 bool uses_oracle(bool) const {
65 return true;
66 }
67
68public:
69 std::unique_ptr<tatami::MyopicDenseExtractor<Value_, Index_> > dense(bool row, const tatami::Options& opt) const {
70 return my_matrix->dense(row, opt);
71 }
72
73 std::unique_ptr<tatami::MyopicDenseExtractor<Value_, Index_> > dense(bool row, Index_ bs, Index_ bl, const tatami::Options& opt) const {
74 return my_matrix->dense(row, bs, bl, opt);
75 }
76
77 std::unique_ptr<tatami::MyopicDenseExtractor<Value_, Index_> > dense(bool row, tatami::VectorPtr<Index_> idx, const tatami::Options& opt) const {
78 return my_matrix->dense(row, std::move(idx), opt);
79 }
80
81public:
82 std::unique_ptr<tatami::MyopicSparseExtractor<Value_, Index_> > sparse(bool row, const tatami::Options& opt) const {
83 return my_matrix->sparse(row, opt);
84 }
85
86 std::unique_ptr<tatami::MyopicSparseExtractor<Value_, Index_> > sparse(bool row, Index_ bs, Index_ bl, const tatami::Options& opt) const {
87 return my_matrix->sparse(row, bs, bl, opt);
88 }
89
90 std::unique_ptr<tatami::MyopicSparseExtractor<Value_, Index_> > sparse(bool row, tatami::VectorPtr<Index_> idx, const tatami::Options& opt) const {
91 return my_matrix->sparse(row, std::move(idx), opt);
92 }
93
94public:
95 std::unique_ptr<tatami::OracularDenseExtractor<Value_, Index_> > dense(bool row, std::shared_ptr<const tatami::Oracle<Index_> > ora, const tatami::Options& opt) const {
96 return my_matrix->dense(row, std::move(ora), opt);
97 }
98
99 std::unique_ptr<tatami::OracularDenseExtractor<Value_, Index_> > dense(bool row, std::shared_ptr<const tatami::Oracle<Index_> > ora, Index_ bs, Index_ bl, const tatami::Options& opt) const {
100 return my_matrix->dense(row, std::move(ora), bs, bl, opt);
101 }
102
103 std::unique_ptr<tatami::OracularDenseExtractor<Value_, Index_> > dense(bool row, std::shared_ptr<const tatami::Oracle<Index_> > ora, tatami::VectorPtr<Index_> idx, const tatami::Options& opt) const {
104 return my_matrix->dense(row, std::move(ora), std::move(idx), opt);
105 }
106
107public:
108 std::unique_ptr<tatami::OracularSparseExtractor<Value_, Index_> > sparse(bool row, std::shared_ptr<const tatami::Oracle<Index_> > ora, const tatami::Options& opt) const {
109 return my_matrix->sparse(row, std::move(ora), opt);
110 }
111
112 std::unique_ptr<tatami::OracularSparseExtractor<Value_, Index_> > sparse(bool row, std::shared_ptr<const tatami::Oracle<Index_> > ora, Index_ bs, Index_ bl, const tatami::Options& opt) const {
113 return my_matrix->sparse(row, std::move(ora), bs, bl, opt);
114 }
115
116 std::unique_ptr<tatami::OracularSparseExtractor<Value_, Index_> > sparse(bool row, std::shared_ptr<const tatami::Oracle<Index_> > ora, tatami::VectorPtr<Index_> idx, const tatami::Options& opt) const {
117 return my_matrix->sparse(row, std::move(ora), std::move(idx), opt);
118 }
119};
120
121}
122
123#endif
Force oracular extraction.
Definition ForcedOracleWrapper.hpp:28
ForcedOracleWrapper(std::shared_ptr< const tatami::Matrix< Value_, Index_ > > matrix)
Definition ForcedOracleWrapper.hpp:34
Utilities for testing tatami libraries.
Definition create_indexed_subset.hpp:15
std::shared_ptr< const std::vector< Index_ > > VectorPtr