Thrill  0.1
buf_istream_reverse< BlockType, BidIteratorType > Class Template Reference

Detailed Description

template<typename BlockType, typename BidIteratorType>
class foxxll::buf_istream_reverse< BlockType, BidIteratorType >

Buffered input stream, reading the items in the blocks in reverse order.

Reads data records from the stream of blocks in reverse order.

Remarks
Reading performed in the background, i.e. with overlapping of I/O and computation

Definition at line 39 of file buf_istream_reverse.hpp.

+ Collaboration diagram for buf_istream_reverse< BlockType, BidIteratorType >:

#include <buf_istream_reverse.hpp>

Public Types

using bid_iterator_type = BidIteratorType
 
using bid_vector_type = BIDArray< block_type::raw_size >
 
using block_type = BlockType
 
using reference = typename block_type::reference
 
using self_type = buf_istream_reverse< block_type, bid_iterator_type >
 

Public Member Functions

 buf_istream_reverse (bid_iterator_type begin, bid_iterator_type end, size_t nbuffers)
 
 buf_istream_reverse (const buf_istream_reverse &)=delete
 non-copyable: delete copy-constructor More...
 
 ~buf_istream_reverse ()
 Frees used internal objects. More...
 
reference current ()
 Returns reference to the current record in the stream. More...
 
reference operator* ()
 Returns reference to the current record in the stream. More...
 
self_typeoperator++ ()
 
buf_istream_reverseoperator= (const buf_istream_reverse &)=delete
 non-copyable: delete assignment operator More...
 
self_typeoperator>> (reference record)
 

Protected Types

using prefetcher_type = block_prefetcher< block_type, typename bid_vector_type::iterator >
 

Protected Attributes

bid_vector_type bids_
 
block_typecurrent_blk
 
size_t current_elem
 
bool not_finished
 
size_t * prefetch_seq
 
prefetcher_typeprefetcher
 

Private Member Functions

 buf_istream_reverse ()
 

Member Typedef Documentation

◆ bid_iterator_type

using bid_iterator_type = BidIteratorType

Definition at line 43 of file buf_istream_reverse.hpp.

◆ bid_vector_type

using bid_vector_type = BIDArray<block_type::raw_size>

Definition at line 47 of file buf_istream_reverse.hpp.

◆ block_type

using block_type = BlockType

Definition at line 42 of file buf_istream_reverse.hpp.

◆ prefetcher_type

Definition at line 53 of file buf_istream_reverse.hpp.

◆ reference

using reference = typename block_type::reference

Definition at line 64 of file buf_istream_reverse.hpp.

◆ self_type

Constructor & Destructor Documentation

◆ buf_istream_reverse() [1/3]

◆ buf_istream_reverse() [2/3]

buf_istream_reverse ( bid_iterator_type  begin,
bid_iterator_type  end,
size_t  nbuffers 
)
inline

Constructs input stream object, reading [first,last) blocks in reverse.

Parameters
beginbid_iterator pointing to the first block of the stream
endbid_iterator pointing to the ( last + 1 ) block of the stream
nbuffersnumber of buffers for internal use

Definition at line 71 of file buf_istream_reverse.hpp.

References SimpleVector< ValueType, Mode >::begin(), buf_istream_reverse< BlockType, BidIteratorType >::buf_istream_reverse(), foxxll::compute_prefetch_schedule(), config::disks_number(), SimpleVector< ValueType, Mode >::end(), singleton< config >::get_instance(), max(), config::max_device_id(), buf_istream_reverse< BlockType, BidIteratorType >::operator=(), buf_istream_reverse< BlockType, BidIteratorType >::prefetch_seq, and SimpleVector< ValueType, Mode >::size().

◆ buf_istream_reverse() [3/3]

buf_istream_reverse ( const buf_istream_reverse< BlockType, BidIteratorType > &  )
delete

non-copyable: delete copy-constructor

◆ ~buf_istream_reverse()

Member Function Documentation

◆ current()

reference current ( )
inline

Returns reference to the current record in the stream.

Definition at line 137 of file buf_istream_reverse.hpp.

References buf_istream_reverse< BlockType, BidIteratorType >::current_elem.

◆ operator*()

reference operator* ( )
inline

Returns reference to the current record in the stream.

Definition at line 143 of file buf_istream_reverse.hpp.

References buf_istream_reverse< BlockType, BidIteratorType >::current_elem.

◆ operator++()

self_type& operator++ ( )
inline

Moves to the previous record in the stream.

Returns
reference to itself after the advance

Definition at line 150 of file buf_istream_reverse.hpp.

References block_prefetcher< BlockType, BidIteratorType >::block_consumed(), and TLX_UNLIKELY.

◆ operator=()

buf_istream_reverse& operator= ( const buf_istream_reverse< BlockType, BidIteratorType > &  )
delete

non-copyable: delete assignment operator

Referenced by buf_istream_reverse< BlockType, BidIteratorType >::buf_istream_reverse().

◆ operator>>()

self_type& operator>> ( reference  record)
inline

Input stream operator, reads in record.

Parameters
recordreference to the block record type, contains value of the next record in the stream after the call of the operator
Returns
reference to itself (stream object)

Definition at line 111 of file buf_istream_reverse.hpp.

References block_prefetcher< BlockType, BidIteratorType >::block_consumed(), buf_istream_reverse< BlockType, BidIteratorType >::current_elem, and TLX_UNLIKELY.

Member Data Documentation

◆ bids_

bid_vector_type bids_
protected

Definition at line 61 of file buf_istream_reverse.hpp.

◆ current_blk

block_type* current_blk
protected

Definition at line 56 of file buf_istream_reverse.hpp.

◆ current_elem

◆ not_finished

bool not_finished
protected

Definition at line 59 of file buf_istream_reverse.hpp.

◆ prefetch_seq

◆ prefetcher


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