TPIE

v1.1rc1-6-g0c97303
tpie::serialization_reverse_reader Class Reference

Inherits tpie::bits::serialization_reader_base.

Public Member Functions

void open (std::string path)
 
void open (temp_file &tempFile)
 
bool can_read ()
 
stream_size_type offset ()
 Number of bytes read, not including the header. More...
 
void close ()
 
void read (char *const s, const memory_size_type n)
 Read n bytes from stream into buffer starting at s. More...
 
template<typename T >
void unserialize (T &v)
 Unserialize an unserializable item from the stream. More...
 
template<typename IT >
void unserialize (IT a, IT b)
 Unserialize a sequence of unserializable items from the stream. More...
 
stream_size_type file_size ()
 Size of file in bytes, including the header. More...
 
stream_size_type size ()
 Size of file in bytes, not including the header. More...
 

Static Public Member Functions

static memory_size_type block_size ()
 
static memory_size_type memory_usage ()
 

Protected Member Functions

virtual void next_block ()
 
void open (std::string path, bool reverse)
 
void read_block (const stream_size_type blk)
 

Protected Attributes

tpie::array< char > m_block
 
stream_size_type m_size
 
memory_size_type m_index
 
memory_size_type m_blockSize
 

Detailed Description

Definition at line 374 of file serialization_stream.h.

Member Function Documentation

stream_size_type tpie::bits::serialization_reader_base::file_size ( )
inherited

Size of file in bytes, including the header.

stream_size_type tpie::serialization_reverse_reader::offset ( )

Number of bytes read, not including the header.

For progress reporting.

Referenced by tpie::pipelining::serialization_bits::rev_output_t< output_dest_t >::go().

void tpie::bits::serialization_reader_base::read ( char *const  s,
const memory_size_type  n 
)
inlineinherited

Read n bytes from stream into buffer starting at s.

Parameters
sBuffer to contain the read data.
nNumber of bytes to read.

Definition at line 277 of file serialization_stream.h.

References tpie::array< T, Allocator >::get().

277  {
278  // TODO: inline some of this
279  char * i = s;
280  memory_size_type written = 0;
281  while (written != n) {
282  if (m_index >= m_blockSize) {
283  // virtual invocation
284  next_block();
285  }
286 
287  memory_size_type remaining = n - written;
288  memory_size_type blockRemaining = m_blockSize - m_index;
289 
290  memory_size_type readSize = std::min(remaining, blockRemaining);
291 
292  i = std::copy(m_block.get() + m_index,
293  m_block.get() + (m_index + readSize),
294  i);
295 
296  written += readSize;
297  m_index += readSize;
298  }
299  }
T * get()
Return a raw pointer to the array content.
Definition: array.h:477
stream_size_type tpie::bits::serialization_reader_base::size ( )
inherited
template<typename T >
void tpie::bits::serialization_reader_base::unserialize ( T &  v)
inlineinherited

Unserialize an unserializable item from the stream.

An item of the given type must exist at the current point in the stream.

The code stream.unserialize(v) just calls unserialize(stream, v) via ADL.

Definition at line 311 of file serialization_stream.h.

References tpie::unserialize().

Referenced by tpie::pipelining::serialization_bits::input_t< dest_t >::go(), tpie::pipelining::serialization_bits::rev_output_t< output_dest_t >::go(), and tpie::bits::serialization_reader_base::unserialize().

311  {
312  using tpie::unserialize;
313  unserialize(*this, v);
314  }
void unserialize(S &src, foo &v)
Sample tpie::unserialize prototype.
void unserialize(T &v)
Unserialize an unserializable item from the stream.
template<typename IT >
void tpie::bits::serialization_reader_base::unserialize ( IT  a,
IT  b 
)
inlineinherited

Unserialize a sequence of unserializable items from the stream.

A sequence of the given item type must exist at the current point in the stream.

The code stream.unserialize(a, b) just calls unserialize(stream, a, b) via ADL.

Definition at line 326 of file serialization_stream.h.

References tpie::unserialize(), and tpie::bits::serialization_reader_base::unserialize().

326  {
327  using tpie::unserialize;
328  unserialize(*this, a, b);
329  }
void unserialize(S &src, foo &v)
Sample tpie::unserialize prototype.
void unserialize(T &v)
Unserialize an unserializable item from the stream.

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