Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JLANG::JMultiPipe< T, N > Class Template Reference

Auxiliary class for object iteration via multiple pipes, e.g. operator: More...

#include <JPipe.hh>

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

Public Types

typedef JObjectIterator< T >::pointer_type pointer_type
 

Public Member Functions

 JMultiPipe (JObjectIterator< T > &input)
 Constructor.
 
 JMultiPipe (JObjectIterator< T > &input, const JValve< T > &valve)
 Constructor.
 
 JMultiPipe (JObjectIterator< T > &input, const JObjectSelector< T > &selector)
 Constructor.
 
 JMultiPipe (JObjectIterator< T > &input, const JRegulator &regulator)
 Constructor.
 
 JMultiPipe (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.
 

Static Public Attributes

static JSinglePointer< JMultiPipe< T, N > > pipe
 Declaration of common pipe.
 

Protected Attributes

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

Private Attributes

pointer_type ps
 
pointer_type p
 

Friends

void operator| (JMultiPipe &left, JObjectOutput< T > &right)
 Pipe terminator.
 
JMultiPipe< T, N+1 > & operator| (JMultiPipe &left, const JValve< T > &right)
 Recursive expansion of multi-pipe.
 
JMultiPipe< T, N+1 > & operator| (JMultiPipe &left, const JObjectSelector< T > &right)
 Recursive expansion of multi-pipe.
 
JMultiPipe< T, N+1 > & operator| (JMultiPipe &left, const JRegulator &right)
 Recursive expansion of multi-pipe.
 
template<class JBase_t >
JObjectMultiplexer< T, JBase_t > & operator| (JMultiPipe &left, const JType< JBase_t > &right)
 Pipe operator for multiplexing.
 

Detailed Description

template<class T, int N>
class JLANG::JMultiPipe< T, N >

Auxiliary class for object iteration via multiple pipes, e.g. operator:

     .. | .. | ..

Definition at line 204 of file JPipe.hh.

Member Typedef Documentation

◆ pointer_type

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

Definition at line 42 of file JPipe.hh.

Constructor & Destructor Documentation

◆ JMultiPipe() [1/5]

template<class T , int N>
JLANG::JMultiPipe< T, N >::JMultiPipe ( JObjectIterator< T > & input)
inline

Constructor.

Parameters
inputobject iterator

Definition at line 213 of file JPipe.hh.

213 :
215 {}
static const T & getDefault()
Definition JDefault.hh:24

◆ JMultiPipe() [2/5]

template<class T , int N>
JLANG::JMultiPipe< T, N >::JMultiPipe ( JObjectIterator< T > & input,
const JValve< T > & valve )
inline

Constructor.

Parameters
inputobject iterator
valvevalve

Definition at line 224 of file JPipe.hh.

225 :
227 {}
const JValve< T > & valve
Definition JPipe.hh:127

◆ JMultiPipe() [3/5]

template<class T , int N>
JLANG::JMultiPipe< T, N >::JMultiPipe ( JObjectIterator< T > & input,
const JObjectSelector< T > & selector )
inline

Constructor.

Parameters
inputobject iterator
selectorobject selector

Definition at line 236 of file JPipe.hh.

237 :
239 {}
const JObjectSelector< T > & selector
Definition JPipe.hh:128

◆ JMultiPipe() [4/5]

template<class T , int N>
JLANG::JMultiPipe< T, N >::JMultiPipe ( JObjectIterator< T > & input,
const JRegulator & regulator )
inline

Constructor.

Parameters
inputobject iterator
regulatorregulator

Definition at line 248 of file JPipe.hh.

249 :
251 {}
const JRegulator & regulator
Definition JPipe.hh:129

◆ JMultiPipe() [5/5]

template<class T , int N>
JLANG::JMultiPipe< T, N >::JMultiPipe ( 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 262 of file JPipe.hh.

265 :
266 JPipe<T>(input, valve, selector, regulator)
267 {}

Member Function Documentation

◆ hasNext()

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

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.
JObjectIterator< T > & in
Definition JPipe.hh:126
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 ( )
inlineoverridevirtualinherited

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)
inlineoverridevirtualinherited

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 }

Friends And Related Symbol Documentation

◆ operator| [1/5]

template<class T , int N>
void operator| ( JMultiPipe< T, N > & left,
JObjectOutput< T > & right )
friend

Pipe terminator.

Parameters
leftpipe
rightobject output

Definition at line 276 of file JPipe.hh.

277 {
278 left >> right;
279 }

◆ operator| [2/5]

template<class T , int N>
JMultiPipe< T, N+1 > & operator| ( JMultiPipe< T, N > & left,
const JValve< T > & right )
friend

Recursive expansion of multi-pipe.

Parameters
leftmulti-pipe
rightobject valve
Returns
multi-pipe

Definition at line 289 of file JPipe.hh.

290 {
291 JMultiPipe<T, N+1>::pipe.reset(new JMultiPipe<T, N+1>(left, right));
292
294 }
JMultiPipe(JObjectIterator< T > &input)
Constructor.
Definition JPipe.hh:213
static JSinglePointer< JMultiPipe< T, N > > pipe
Declaration of common pipe.
Definition JPipe.hh:343

◆ operator| [3/5]

template<class T , int N>
JMultiPipe< T, N+1 > & operator| ( JMultiPipe< T, N > & left,
const JObjectSelector< T > & right )
friend

Recursive expansion of multi-pipe.

Parameters
leftmulti-pipe
rightobject selector
Returns
multi-pipe

Definition at line 304 of file JPipe.hh.

305 {
306 JMultiPipe<T, N+1>::pipe.reset(new JMultiPipe<T, N+1>(left, right));
307
309 }

◆ operator| [4/5]

template<class T , int N>
JMultiPipe< T, N+1 > & operator| ( JMultiPipe< T, N > & left,
const JRegulator & right )
friend

Recursive expansion of multi-pipe.

Parameters
leftmulti-pipe
rightregulator
Returns
multi-pipe

Definition at line 319 of file JPipe.hh.

320 {
321 JMultiPipe<T, N+1>::pipe.reset(new JMultiPipe<T, N+1>(left, right));
322
324 }

◆ operator| [5/5]

template<class T , int N>
template<class JBase_t >
JObjectMultiplexer< T, JBase_t > & operator| ( JMultiPipe< T, N > & left,
const JType< JBase_t > & right )
friend

Pipe operator for multiplexing.

Parameters
leftobject iterator
rightdata type
Returns
object multiplexer

Definition at line 335 of file JPipe.hh.

336 {
337 JObjectMultiplexer<T, JBase_t>::multiplexer.reset(new JObjectMultiplexer<T, JBase_t>(left));
338
340 }
static multiplexer_type multiplexer
Multiplexer.
virtual void reset() override
Reset pointer.
Definition JStorage.hh:42

Member Data Documentation

◆ pipe

template<class T , int N>
JSinglePointer< JMultiPipe< T, N > > JLANG::JMultiPipe< T, N >::pipe
static

Declaration of common pipe.

Definition of common pipe.

Definition at line 343 of file JPipe.hh.

◆ in

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

Definition at line 126 of file JPipe.hh.

◆ valve

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

Definition at line 127 of file JPipe.hh.

◆ selector

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

Definition at line 128 of file JPipe.hh.

◆ regulator

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

Definition at line 129 of file JPipe.hh.

◆ ps

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

Definition at line 132 of file JPipe.hh.

◆ p

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

Definition at line 133 of file JPipe.hh.


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