TPIE

v1.1rc1-6-g0c97303
tpie::queue< T > Class Template Reference

Basic Implementation of I/O Efficient FIFO queue. More...

#include <tpie/queue.h>

Public Member Functions

 queue (stream_size_type elements=std::numeric_limits< stream_size_type >::max(), double block_factor=1.0)
 Constructor for Temporary Queue. More...
 
void resize (stream_size_type)
 Does nothing. More...
 
 queue (const std::string &basename, double block_factor=1.0)
 Load or create a named queue. More...
 
 ~queue ()
 Destructor, closes the underlying stream. More...
 
bool empty ()
 Check if the queue is empty. More...
 
 TPIE_DEPRECATED (bool is_empty())
 
stream_size_type size ()
 Returns the number of items currently on the queue. More...
 
void push (const T &t)
 Enqueue an item. More...
 
 TPIE_DEPRECATED (ami::err enqueue(const T &t))
 
const T & pop ()
 Dequeues an item. More...
 
 TPIE_DEPRECATED (ami::err dequeue(const T **t))
 
const T & front ()
 Returns at the frontmost item in the queue. More...
 
 TPIE_DEPRECATED (ami::err peek(const T **t))
 
 TPIE_DEPRECATED (ami::err trim())
 Deprecated, does nothing. More...
 
 TPIE_DEPRECATED (void persist(persistence p))
 Set the persistence status of the (stacks underlying the) queue. More...
 

Static Public Member Functions

static memory_size_type memory_usage (double blockFactor=1.0)
 Compute the memory used by the queue. More...
 

Detailed Description

template<class T>
class tpie::queue< T >

Basic Implementation of I/O Efficient FIFO queue.

Author
The TPIE Project

Definition at line 42 of file queue.h.

Constructor & Destructor Documentation

template<class T >
tpie::queue< T >::queue ( stream_size_type  elements = std::numeric_limits<stream_size_type>::max(),
double  block_factor = 1.0 
)
inline

Constructor for Temporary Queue.

Definition at line 47 of file queue.h.

References tpie::access_read_write, and tpie::unused().

48  : m_size(0), m_file(block_factor) {
49  m_file.open(m_temp, access_read_write, sizeof(stream_size_type) );
50  m_back.attach(m_file);
51  m_front.attach(m_file);
52  unused(elements);
53  }
void unused(const T &x)
Declare that a variable is unused on purpose.
Definition: util.h:42
Open a file for reading or writing.
Definition: access_type.h:35
template<class T >
tpie::queue< T >::queue ( const std::string &  basename,
double  block_factor = 1.0 
)

Load or create a named queue.

Parameters
basenameThe base name of the queue to load/create

Definition at line 152 of file queue.h.

References tpie::access_read_write, and tpie::temp_file::set_persistent().

152  :
153  m_temp(basename), m_size(0), m_file(blockFactor), m_back(m_file), m_front(m_file) {
154  m_temp.set_persistent(true);
155  m_file.open(basename, access_read_write, sizeof(stream_size_type) );
156  if (m_file.size() != 0) {
157  stream_size_type t;
158  m_file.read_user_data(t);
159  m_front.seek(t);
160  }
161  m_back.seek(0, file_base::stream::end);
162  m_size = m_back.offset() - m_front.offset();
163 }
void set_persistent(bool p)
Set persistence.
Definition: tempname.h:168
Open a file for reading or writing.
Definition: access_type.h:35
template<class T >
tpie::queue< T >::~queue ( )
inline

Destructor, closes the underlying stream.

Definition at line 71 of file queue.h.

71 {m_file.write_user_data(m_back.offset());}

Member Function Documentation

template<class T >
bool tpie::queue< T >::empty ( )
inline

Check if the queue is empty.

Returns
true if the queue is empty otherwize false

Definition at line 77 of file queue.h.

77 {return m_size == 0;}
template<class T >
const T& tpie::queue< T >::front ( )
inline

Returns at the frontmost item in the queue.

Returns
The front most item in the queue

Definition at line 111 of file queue.h.

111  {
112  const T & el = m_front.read();
113  m_front.seek(-1, file_base::stream::current);
114  return el;
115  }
template<class T >
static memory_size_type tpie::queue< T >::memory_usage ( double  blockFactor = 1.0)
inlinestatic

Compute the memory used by the queue.

Definition at line 126 of file queue.h.

126  {
127  return sizeof(queue<T>)
128  + file<T>::memory_usage() - sizeof(file<T>)
129  + 2*file<T>::stream::memory_usage(blockFactor) - 2*sizeof(typename file<T>::stream);
130  }
static memory_size_type memory_usage(double blockFactor=1.0)
Calculate the memory usage of a stream.
Definition: file.h:89
template<class T >
const T& tpie::queue< T >::pop ( )
inline

Dequeues an item.

Returns
The dequeued item

Definition at line 100 of file queue.h.

100  {
101  const T & el = m_front.read();
102  --m_size;
103  return el;
104  }
template<class T >
void tpie::queue< T >::push ( const T &  t)
inline

Enqueue an item.

Parameters
tThe item to be enqueued

Definition at line 90 of file queue.h.

90  {
91  m_back.write(t);
92  ++m_size;
93  }
template<class T >
void tpie::queue< T >::resize ( stream_size_type  )
inline

Does nothing.

This method is included so the interface is compatible with internal_queue

Definition at line 60 of file queue.h.

60 {}
template<class T >
stream_size_type tpie::queue< T >::size ( )
inline

Returns the number of items currently on the queue.

Returns
Number of itmes in the queue

Definition at line 84 of file queue.h.

84 {return m_size;}
template<class T >
tpie::queue< T >::TPIE_DEPRECATED ( ami::err   trim())

Deprecated, does nothing.

template<class T >
tpie::queue< T >::TPIE_DEPRECATED ( void   persistpersistence p)

Set the persistence status of the (stacks underlying the) queue.

Parameters
pA persistence status.

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