Jpp  18.6.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | Friends | List of all members
JLANG::JMultiPipe< T, N > Class 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 () override
 Check availability of next element. More...
 
virtual const pointer_typenext () override
 Get next element. More...
 
virtual skip_type skip (const skip_type ns) override
 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
 

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 for multiplexing. More...
 

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 38 of file JObjectIterator.hh.

Member Typedef Documentation

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

Definition at line 42 of file JPipe.hh.

Constructor & Destructor Documentation

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 JValve< T > & getDefault()
Get default value of template class.
Definition: JDefault.hh:24
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  {}
static const JObjectSelector< T > & getDefault()
Get default value of template class.
Definition: JDefault.hh:24
const JValve< T > & valve
Definition: JPipe.hh:127
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
static const JValve< T > & getDefault()
Get default value of template class.
Definition: JDefault.hh:24
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
static const JValve< T > & getDefault()
Get default value of template class.
Definition: JDefault.hh:24
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  {}
const JObjectSelector< T > & selector
Definition: JPipe.hh:128
const JRegulator & regulator
Definition: JPipe.hh:129
const JValve< T > & valve
Definition: JPipe.hh:127

Member Function Documentation

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  }
const JObjectSelector< T > & selector
Definition: JPipe.hh:128
const JRegulator & regulator
Definition: JPipe.hh:129
JObjectIterator< T > & in
Definition: JPipe.hh:126
bool is_valid() const
Check validity of pointer.
virtual bool accept() const
Accept.
Definition: JRegulator.hh:34
const JValve< T > & valve
Definition: JPipe.hh:127
pointer_type p
Definition: JPipe.hh:133
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 p
Definition: JPipe.hh:133
pointer_type ps
Definition: JPipe.hh:132
virtual void reset() override
Reset pointer.
Definition: JPointer.hh:84
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  }
JObjectIterator< T > & in
Definition: JPipe.hh:126
std::vector< size_t > ns

Friends And Related Function Documentation

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  }
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 
293  return *JMultiPipe<T, N+1>::pipe;
294  }
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 
308  return *JMultiPipe<T, N+1>::pipe;
309  }
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 
323  return *JMultiPipe<T, N+1>::pipe;
324  }
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 
339  return *JObjectMultiplexer<T, JBase_t>::multiplexer;
340  }

Member Data Documentation

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.

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

Definition at line 126 of file JPipe.hh.

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

Definition at line 127 of file JPipe.hh.

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

Definition at line 128 of file JPipe.hh.

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

Definition at line 129 of file JPipe.hh.


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