Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
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.
 
virtual bool hasNext () override
 Check availability of next element.
 
virtual const pointer_typenext () override
 Get next element.
 
virtual skip_type skip (const skip_type ns) override
 Skip items.
 

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 37 of file JPipe.hh.

Member Typedef Documentation

◆ pointer_type

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

Definition at line 42 of file JPipe.hh.

Constructor & Destructor Documentation

◆ JPipe()

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 52 of file JPipe.hh.

55 :
56 in (input),
57 valve (valve),
60 {}
JObjectIterator< T > & in
Definition JPipe.hh:126
const JRegulator & regulator
Definition JPipe.hh:129
const JObjectSelector< T > & selector
Definition JPipe.hh:128
const JValve< T > & valve
Definition JPipe.hh:127

Member Function Documentation

◆ hasNext()

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

Check availability of next element.

Returns
true if the iteration has more elements; else false

Implements JLANG::JObjectIterator< T >.

Definition at line 68 of file JPipe.hh.

69 {
70 if (!p.is_valid()) {
71
72 if (valve.is_open()) {
73
74 while (in.hasNext()) {
75
76 p = in.next();
77
78 if (selector.accept(*p)) {
79
80 if (regulator.accept()) {
81 return true;
82 }
83 }
84 }
85 }
86
87 p = NULL; // invalid pointer for next round
88
89 return false;
90
91 } else {
92
93 return true;
94 }
95 }
bool is_valid() const
Check validity of pointer.
pointer_type p
Definition JPipe.hh:133
virtual bool accept() const
Accept.
Definition JRegulator.hh:34

◆ next()

template<class T >
virtual const pointer_type & JLANG::JPipe< T >::next ( )
inlineoverridevirtual

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 103 of file JPipe.hh.

104 {
105 ps = p;
106
107 p.reset();
108
109 return ps;
110 }
pointer_type ps
Definition JPipe.hh:132
virtual void reset() override
Reset pointer.
Definition JPointer.hh:84

◆ skip()

template<class T >
virtual skip_type JLANG::JPipe< T >::skip ( const skip_type ns)
inlineoverridevirtual

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented from JLANG::JObjectIterator< T >.

Definition at line 119 of file JPipe.hh.

120 {
121 return in.skip(ns);
122 }

Member Data Documentation

◆ in

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

Definition at line 126 of file JPipe.hh.

◆ valve

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

Definition at line 127 of file JPipe.hh.

◆ selector

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

Definition at line 128 of file JPipe.hh.

◆ regulator

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

Definition at line 129 of file JPipe.hh.

◆ ps

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

Definition at line 132 of file JPipe.hh.

◆ p

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

Definition at line 133 of file JPipe.hh.


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