Jpp
Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | Private Attributes | Friends | List of all members
JLANG::JMultiPipe< T, N > Struct Template Reference

Auxiliary class for object iteration via multiple pipes (e.g. operator | ..\ |). More...

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

Static Public Attributes

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

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. More...
 
JMultiPipe< T, N+1 > & operator| (JMultiPipe &left, const JValve< T > &right)
 Recursive expansion of multi-pipe. More...
 
JMultiPipe< T, N+1 > & operator| (JMultiPipe &left, const JObjectSelector< T > &right)
 Recursive expansion of multi-pipe. More...
 
JMultiPipe< T, N+1 > & operator| (JMultiPipe &left, const JRegulator &right)
 Recursive expansion of multi-pipe. More...
 
template<class JBase_t >
JObjectMultiplexer< T, JBase_t > & operator| (JMultiPipe &left, const JType< JBase_t > &right)
 Pipe operator. More...
 

Detailed Description

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

Auxiliary class for object iteration via multiple pipes (e.g. operator | ..\ |).

Definition at line 36 of file JObjectIterator.hh.

Member Typedef Documentation

◆ pointer_type

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

Definition at line 39 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 205 of file JPipe.hh.

205  :
207  {}

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

217  :
219  {}

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

229  :
231  {}

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

241  :
243  {}

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

257  :
258  JPipe<T>(input, valve, selector, regulator)
259  {}

Member Function Documentation

◆ hasNext()

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

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  }

◆ next()

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

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  }

◆ skip()

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

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  }

Friends And Related Function 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 268 of file JPipe.hh.

269  {
270  left >> right;
271  }

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

282  {
283  JMultiPipe<T, N+1>::pipe.reset(new JMultiPipe<T, N+1>(left, right));
284 
285  return *JMultiPipe<T, N+1>::pipe;
286  }

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

297  {
298  JMultiPipe<T, N+1>::pipe.reset(new JMultiPipe<T, N+1>(left, right));
299 
300  return *JMultiPipe<T, N+1>::pipe;
301  }

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

312  {
313  JMultiPipe<T, N+1>::pipe.reset(new JMultiPipe<T, N+1>(left, right));
314 
315  return *JMultiPipe<T, N+1>::pipe;
316  }

◆ 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.

Parameters
leftobject iterator
rightdata type
Returns
object multiplexer

Definition at line 327 of file JPipe.hh.

328  {
329  JObjectMultiplexer<T, JBase_t>::multiplexer.reset(new JObjectMultiplexer<T, JBase_t>(left));
330 
332  }

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

◆ in

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

Definition at line 123 of file JPipe.hh.

◆ valve

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

Definition at line 124 of file JPipe.hh.

◆ selector

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

Definition at line 125 of file JPipe.hh.

◆ regulator

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

Definition at line 126 of file JPipe.hh.

◆ ps

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

Definition at line 129 of file JPipe.hh.

◆ p

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

Definition at line 130 of file JPipe.hh.


The documentation for this struct was generated from the following files:
JLANG::JPipe::in
JObjectIterator< T > & in
Definition: JPipe.hh:123
JLANG::JPipe::valve
const JValve< T > & valve
Definition: JPipe.hh:124
JLANG::JPointer::reset
virtual void reset()
Reset pointer.
Definition: JPointer.hh:84
JLANG::JDefault< JValve< T > >::getDefault
static const JValve< T > & getDefault()
Get default value of template class.
Definition: JDefault.hh:24
JLANG::JObjectMultiplexer::multiplexer
static multiplexer_type multiplexer
Multiplexer.
Definition: JObjectMultiplexer.hh:97
JLANG::JMultiPipe::pipe
static JSinglePointer< JMultiPipe< T, N > > pipe
Declaration of common pipe.
Definition: JPipe.hh:335
JLANG::JPipe::selector
const JObjectSelector< T > & selector
Definition: JPipe.hh:125
JLANG::JRegulator::accept
virtual bool accept() const
Accept.
Definition: JRegulator.hh:33
JLANG::JPipe::ps
pointer_type ps
Definition: JPipe.hh:129
JLANG::JPipe::regulator
const JRegulator & regulator
Definition: JPipe.hh:126
JLANG::JPipe::p
pointer_type p
Definition: JPipe.hh:130
JLANG::JStorage::reset
virtual void reset()
Reset pointer.
Definition: JStorage.hh:42
JLANG::JAbstractPointer::is_valid
bool is_valid() const
Check validity of pointer.
Definition: JAbstractPointer.hh:83