CPN
Computational Process Networks
Public Member Functions | Private Attributes | List of all members
CPN::OQueue< T > Class Template Reference

A template class to do type conversion for the writer end of the queue. More...

#include <OQueue.h>

+ Collaboration diagram for CPN::OQueue< T >:

Public Member Functions

 OQueue ()
 
 OQueue (shared_ptr< QueueWriter > q)
 
T * GetEnqueuePtr (unsigned thresh, unsigned chan=0)
 
void Enqueue (unsigned count)
 
void Enqueue (const T *data, unsigned count)
 
void Enqueue (const T *data, unsigned count, unsigned numChans, unsigned chanStride)
 
void Flush ()
 
bool Flushed ()
 
unsigned NumChannels () const
 
unsigned MaxThreshold () const
 
unsigned QueueLength () const
 
unsigned Freespace () const
 
unsigned ChannelStride () const
 
bool Full () const
 
Key_t GetKey () const
 
shared_ptr< QueueWriterGetWriter ()
 
void Release ()
 Release the writer, further operations are invalid. More...
 

Private Attributes

shared_ptr< QueueWriterqueue
 

Detailed Description

template<class T>
class CPN::OQueue< T >

A template class to do type conversion for the writer end of the queue.

Definition at line 41 of file OQueue.h.

Constructor & Destructor Documentation

template<class T >
CPN::OQueue< T >::OQueue ( )
inline

Definition at line 43 of file OQueue.h.

43 {}
template<class T >
CPN::OQueue< T >::OQueue ( shared_ptr< QueueWriter q)
inline

Definition at line 44 of file OQueue.h.

References CPN::OQueue< T >::queue, and CPN::TypeCompatable().

44  : queue(q) {
45  if (!TypeCompatable(TypeName<T>(), queue->GetDatatype())) {
46  throw TypeMismatchException(TypeName<T>(), queue->GetDatatype());
47  }
48  }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
bool TypeCompatable(const std::string &type1, const std::string &type2)

+ Here is the call graph for this function:

Member Function Documentation

template<class T >
unsigned CPN::OQueue< T >::ChannelStride ( ) const
inline
Returns
the current channel stride, only call this after a successful call to GetEnqueuePtr.

Definition at line 100 of file OQueue.h.

References CPN::OQueue< T >::queue.

100 { return queue->ChannelStride()/GetTypeSize<T>(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
void CPN::OQueue< T >::Enqueue ( unsigned  count)
inline

Add count elements to the queue on all channels.

Parameters
countthe number of elements

Definition at line 64 of file OQueue.h.

References CPN::OQueue< T >::queue.

64  {
65  queue->Enqueue(GetTypeSize<T>() * count);
66  }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
void CPN::OQueue< T >::Enqueue ( const T *  data,
unsigned  count 
)
inline

Enqueue the count elements in the array data into this queue.

Parameters
datathe array
countthe number

Definition at line 73 of file OQueue.h.

References CPN::OQueue< T >::queue.

73  {
74  queue->RawEnqueue((void*)data, GetTypeSize<T>() * count);
75  }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
void CPN::OQueue< T >::Enqueue ( const T *  data,
unsigned  count,
unsigned  numChans,
unsigned  chanStride 
)
inline

Enqueue the count elements in the 2D array into the channel.

Parameters
datathe array
countthe number in each channel
numChansthe number of channels
chanStridethe number of elements between channels

Definition at line 84 of file OQueue.h.

References CPN::OQueue< T >::queue.

84  {
85  queue->RawEnqueue((void*)data, GetTypeSize<T>() * count,
86  numChans, GetTypeSize<T>() * chanStride);
87  }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
void CPN::OQueue< T >::Flush ( )
inline

Definition at line 89 of file OQueue.h.

References CPN::OQueue< T >::queue.

89 { queue->Flush(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
bool CPN::OQueue< T >::Flushed ( )
inline

Definition at line 90 of file OQueue.h.

References CPN::OQueue< T >::queue.

90 { return queue->Flushed(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
unsigned CPN::OQueue< T >::Freespace ( ) const
inline
Returns
the amount of freespace in data elements

Definition at line 98 of file OQueue.h.

References CPN::OQueue< T >::queue.

98 { return queue->Freespace()/GetTypeSize<T>(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
bool CPN::OQueue< T >::Full ( ) const
inline
Returns
true if full

Definition at line 102 of file OQueue.h.

References CPN::OQueue< T >::queue.

102 { return queue->Full(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
T* CPN::OQueue< T >::GetEnqueuePtr ( unsigned  thresh,
unsigned  chan = 0 
)
inline

Get an array to write into.

Parameters
threshthe length of the array
chanthe number of channel to get the array from.
Returns
the array

Definition at line 56 of file OQueue.h.

References CPN::OQueue< T >::queue.

56  {
57  return (T*) queue->GetRawEnqueuePtr(GetTypeSize<T>() * thresh, chan);
58  }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
Key_t CPN::OQueue< T >::GetKey ( ) const
inline
Returns
the endpoint key

Definition at line 104 of file OQueue.h.

References CPN::OQueue< T >::queue.

104 { return queue->GetKey(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
shared_ptr<QueueWriter> CPN::OQueue< T >::GetWriter ( )
inline
Returns
the writer

Definition at line 106 of file OQueue.h.

References CPN::OQueue< T >::queue.

106 { return queue; }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
unsigned CPN::OQueue< T >::MaxThreshold ( ) const
inline
Returns
the maximum threshold in data elements

Definition at line 95 of file OQueue.h.

References CPN::OQueue< T >::queue.

95 { return queue->MaxThreshold()/GetTypeSize<T>(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
unsigned CPN::OQueue< T >::NumChannels ( ) const
inline
Returns
the number of channels

Definition at line 93 of file OQueue.h.

References CPN::OQueue< T >::queue.

93 { return queue->NumChannels(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
unsigned CPN::OQueue< T >::QueueLength ( ) const
inline

Definition at line 96 of file OQueue.h.

References CPN::OQueue< T >::queue.

96 { return queue->QueueLength()/GetTypeSize<T>(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111
template<class T >
void CPN::OQueue< T >::Release ( )
inline

Release the writer, further operations are invalid.

Definition at line 108 of file OQueue.h.

References CPN::OQueue< T >::queue.

108 { queue->Release(); queue.reset(); }
shared_ptr< QueueWriter > queue
Definition: OQueue.h:111

Member Data Documentation

template<class T >
shared_ptr<QueueWriter> CPN::OQueue< T >::queue
private

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