Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Attributes | Private Attributes | List of all members
JLANG::JPipe< T > Class Template Reference

Auxiliary class for object iteration via pipe (i.e. operator |). More...

#include <JPipe.hh>

Inheritance diagram for JLANG::JPipe< T >:
JLANG::JObjectIterator< T > JLANG::JMultiPipe< T, N >

Public Types

typedef JObjectIterator< T >
::pointer_type 
pointer_type
 

Public Member Functions

 JPipe (JObjectIterator< T > &input, const JValve< T > &valve, const JObjectSelector< T > &selector, const JRegulator &regulator)
 Constructor. More...
 
virtual bool hasNext ()
 Check availability of next element. More...
 
virtual const pointer_typenext ()
 Get next element. More...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 

Protected Attributes

JObjectIterator< T > & in
 
const JValve< T > & valve
 
const JObjectSelector< T > & selector
 
const JRegulatorregulator
 

Private Attributes

pointer_type ps
 
pointer_type p
 

Detailed Description

template<class T>
class JLANG::JPipe< T >

Auxiliary class for object iteration via pipe (i.e. operator |).

A pipe consists of an object iterator, a valve, an object selector and a common regulator. The objects are first passed through a valve which can be opened and closed. The object selector can be used to filter specific objects/values. Finally, the regulator can be used to control the throughput.

This class implements the JLANG::JObjectIterator interface.

Definition at line 34 of file JPipe.hh.

Member Typedef Documentation

template<class T>
typedef JObjectIterator<T>::pointer_type JLANG::JPipe< T >::pointer_type

Definition at line 39 of file JPipe.hh.

Constructor & Destructor Documentation

template<class T>
JLANG::JPipe< T >::JPipe ( JObjectIterator< T > &  input,
const JValve< T > &  valve,
const JObjectSelector< T > &  selector,
const JRegulator regulator 
)
inline

Constructor.

Parameters
inputobject iterator
valvevalve
selectorobject selector
regulatorregulator

Definition at line 49 of file JPipe.hh.

52  :
53  in (input),
54  valve (valve),
57  {}
const JObjectSelector< T > & selector
Definition: JPipe.hh:125
const JRegulator & regulator
Definition: JPipe.hh:126
JObjectIterator< T > & in
Definition: JPipe.hh:123
const JValve< T > & valve
Definition: JPipe.hh:124

Member Function Documentation

template<class T>
virtual bool JLANG::JPipe< T >::hasNext ( )
inlinevirtual

Check availability of next element.

Returns
true if the iteration has more elements; else false

Implements JLANG::JObjectIterator< T >.

Definition at line 65 of file JPipe.hh.

66  {
67  if (!p.is_valid()) {
68 
69  if (valve.is_open()) {
70 
71  while (in.hasNext()) {
72 
73  p = in.next();
74 
75  if (selector.accept(*p)) {
76 
77  if (regulator.accept()) {
78  return true;
79  }
80  }
81  }
82  }
83 
84  p = NULL; // invalid pointer for next round
85 
86  return false;
87 
88  } else {
89 
90  return true;
91  }
92  }
const JObjectSelector< T > & selector
Definition: JPipe.hh:125
const JRegulator & regulator
Definition: JPipe.hh:126
JObjectIterator< T > & in
Definition: JPipe.hh:123
bool is_valid() const
Check validity of pointer.
const JValve< T > & valve
Definition: JPipe.hh:124
virtual bool accept() const
Accept.
Definition: JRegulator.hh:33
pointer_type p
Definition: JPipe.hh:130
template<class T>
virtual const pointer_type& JLANG::JPipe< T >::next ( )
inlinevirtual

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 100 of file JPipe.hh.

101  {
102  ps = p;
103 
104  p.reset();
105 
106  return ps;
107  }
virtual void reset()
Reset pointer.
Definition: JPointer.hh:84
pointer_type p
Definition: JPipe.hh:130
pointer_type ps
Definition: JPipe.hh:129
template<class T>
virtual skip_type JLANG::JPipe< T >::skip ( const skip_type  ns)
inlinevirtual

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented from JLANG::JObjectIterator< T >.

Definition at line 116 of file JPipe.hh.

117  {
118  return in.skip(ns);
119  }
JObjectIterator< T > & in
Definition: JPipe.hh:123

Member Data Documentation

template<class T>
JObjectIterator<T>& JLANG::JPipe< T >::in
protected

Definition at line 123 of file JPipe.hh.

template<class T>
const JValve<T>& JLANG::JPipe< T >::valve
protected

Definition at line 124 of file JPipe.hh.

template<class T>
const JObjectSelector<T>& JLANG::JPipe< T >::selector
protected

Definition at line 125 of file JPipe.hh.

template<class T>
const JRegulator& JLANG::JPipe< T >::regulator
protected

Definition at line 126 of file JPipe.hh.

template<class T>
pointer_type JLANG::JPipe< T >::ps
private

Definition at line 129 of file JPipe.hh.

template<class T>
pointer_type JLANG::JPipe< T >::p
private

Definition at line 130 of file JPipe.hh.


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