tatami
C++ API for different matrix representations
Loading...
Searching...
No Matches
tatami::OracularSparseExtractor< Value_, Index_ > Class Template Referenceabstract

Extract an element of the target dimension in sparse form with an oracle. More...

#include <Extractor.hpp>

Inheritance diagram for tatami::OracularSparseExtractor< Value_, Index_ >:

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
 

Detailed Description

template<typename Value_, typename Index_>
class tatami::OracularSparseExtractor< Value_, Index_ >

Extract an element of the target dimension in sparse form with an oracle.

Template Parameters
Value_Data value type, should be numeric.
Index_Row/column index type, should be integer.

Member Function Documentation

◆ fetch() [1/2]

template<typename Value_ , typename Index_ >
SparseRange< Value_, Index_ > tatami::OracularSparseExtractor< Value_, Index_ >::fetch ( Value_ * value_buffer,
Index_ * index_buffer )
inline
Parameters
[out]value_bufferPointer to an array with enough space for at least N values, where N is defined as described for MyopicDenseExtractor::fetch().
[out]index_bufferPointer to an array with enough space for at least N indices, where N is defined as described for MyopicDenseExtractor::fetch().

If Options::sparse_extract_value = false during construction of this instance, value_buffer is ignored and SparseRange::value is set to NULL in the output.

If Options::sparse_extract_value = true and SparseRange::value is the same as value_buffer, this means that value_buffer has been filled with the values of the structural non-zero elements of the i-th dimension element.

If Options::sparse_extract_value = true and SparseRange::value is not the same as value_buffer, it should refer to another array of length SparseRange::number. This array should be valid for the lifetime of the Matrix object used to construct this MyopicSparseExtractor. Similarly, the contents should not change for the lifetime of the Matrix. In this situation, no guarantees are provided for the contents of value_buffer.

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.

If Options::sparse_extract_index = true and SparseRange::index is the same as index_buffer, this means that index_buffer has been filled with the indices of the structural non-zero elements of the i-th dimension element.

If Options::sparse_extract_index = true and SparseRange::index is not the same as index_buffer, it should refer to another array of length SparseRange::number. This array should be valid for the lifetime of the Matrix object used to construct this MyopicSparseExtractor. Similarly, the contents should not change for the lifetime of the Matrix. In this situation, no guarantees are provided for the contents of index_buffer.

◆ fetch() [2/2]

template<typename Value_ , typename Index_ >
virtual SparseRange< Value_, Index_ > tatami::OracularSparseExtractor< Value_, Index_ >::fetch ( Index_ i,
Value_ * value_buffer,
Index_ * index_buffer )
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.

Parameters
iIgnored, only provided for consistency with MyopicSparseExtractor::fetch().
[out]value_bufferPointer to an array with enough space for at least N values, where N is defined as described for MyopicDenseExtractor::fetch().
[out]index_bufferPointer to an array with enough space for at least N indices, where N is defined as described for MyopicDenseExtractor::fetch().
Returns
A SparseRange object describing the contents of the next dimension element, see the other fetch() overload for details.

Implemented in tatami::PseudoOracularSparseExtractor< Value_, Index_ >.


The documentation for this class was generated from the following file: