|
tatami
C++ API for different matrix representations
|
Extract an element of the target dimension in sparse form with an oracle. More...
#include <Extractor.hpp>

Public Member Functions | |
| SparseRange< Value_, Index_ > | fetch (Value_ *value_buffer, Index_ *index_buffer) |
| virtual SparseRange< Value_, Index_ > | fetch (Index_ i, Value_ *value_buffer, Index_ *index_buffer)=0 |
Extract an element of the target dimension in sparse form with an oracle.
| Value_ | Data value type, should be numeric. |
| Index_ | Row/column index type, should be integer. |
|
inline |
value_buffer may not necessarily be filled upon extraction if a pointer can be returned to the underlying data store. This be checked by comparing the returned SparseRange::value pointer to value_buffer; if they are the same, value_buffer has been filled with SparseRange::number values. The same applies for index_buffer and the returned SparseRange::index pointer.
If Options::sparse_extract_value was set to false during construction of this instance, value_buffer is ignored and SparseRange::value is set to NULL in the output. Similarly, if Options::sparse_extract_index was set to false during construction of this instance, index_buffer is ignored and SparseRange::index is set to NULL in the output.
| [out] | value_buffer | Pointer to an array with enough space for at least N values, where N is defined as described for MyopicDenseExtractor::fetch(). |
| [out] | index_buffer | Pointer to an array with enough space for at least N indices, where N is defined as described for MyopicDenseExtractor::fetch(). |
SparseRange object describing the contents of the next element of the target dimension, as predicted by the Oracle used to construct this instance.
|
pure virtual |
This overload is intended for developers only. It introduces the i argument so that the signature is the same as that of MyopicSparseExtractor::fetch(). This makes it easier to define MyopicSparseExtractor and OracularSparseExtractor subclasses from a single template, avoiding code duplication that would otherwise occur when defining methods with and without i. Of course, implementations are expected to ignore i in oracle-aware extraction.
Other than the extra i argument, all other behaviors of the two overloads are the same. To avoid confusion, most users should just use the fetch() overload that does not accept i, given that the value of i is never actually used.
| i | Ignored, only provided for consistency with MyopicSparseExtractor::fetch(). | |
| [out] | value_buffer | Pointer to an array with enough space for at least N values, where N is defined as described for MyopicDenseExtractor::fetch(). |
| [out] | index_buffer | Pointer to an array with enough space for at least N indices, where N is defined as described for MyopicDenseExtractor::fetch(). |
SparseRange object describing the contents of the next dimension element, as predicted by the Oracle used to construct this instance. Implemented in tatami::PseudoOracularSparseExtractor< Value_, Index_ >.