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

General purpose class for object reading from a list of file names. More...

#include <JMultipleFileScanner.hh>

Inheritance diagram for JSUPPORT::JMultipleFileScanner< T >:
JLANG::JRewindableObjectIterator< T > JLANG::JObjectIterator< T > JLANG::JRewindable< T >

Public Types

typedef
JMultipleFileScanner::input_type 
input_type
 
typedef
JRewindableObjectIterator< T >
::pointer_type 
pointer_type
 

Public Member Functions

 JMultipleFileScanner ()
 Default constructor. More...
 
template<class JTypelist_t >
 JMultipleFileScanner (const JMultipleFileScanner< JTypelist_t > &input)
 Copy constructor. More...
 
 JMultipleFileScanner (const input_type &file_list, const JLimit &limit=JLimit())
 Constructor. More...
 
const std::string & getFilename () const
 Get current file name. More...
 
counter_type getCounter () const
 Get counter. More...
 
virtual void rewind ()
 Rewind. 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...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 

Protected Attributes

JFileScanner< T > scanner
 
unsigned int index
 
counter_type counter
 

Detailed Description

template<class T = JNullType>
class JSUPPORT::JMultipleFileScanner< T >

General purpose class for object reading from a list of file names.

Implementation of object reading for single data type from a list of file names.

This class extends the JMultipleFileScanner<JNullType> class and implements the JLANG::JRewindableObjectIterator interface.
When the method hasNext() is called, the next file in the list is opened when the previous file is exhausted.

Definition at line 98 of file JMultipleFileScanner.hh.

Member Typedef Documentation

template<class T = JNullType>
typedef JMultipleFileScanner ::input_type JSUPPORT::JMultipleFileScanner< T >::input_type

Definition at line 202 of file JMultipleFileScanner.hh.

template<class T = JNullType>
typedef JRewindableObjectIterator<T>::pointer_type JSUPPORT::JMultipleFileScanner< T >::pointer_type

Definition at line 203 of file JMultipleFileScanner.hh.

Constructor & Destructor Documentation

template<class T = JNullType>
JSUPPORT::JMultipleFileScanner< T >::JMultipleFileScanner ( )
inline

Default constructor.

Definition at line 208 of file JMultipleFileScanner.hh.

208  :
209  index (0),
210  counter(0)
211  {}
template<class T = JNullType>
template<class JTypelist_t >
JSUPPORT::JMultipleFileScanner< T >::JMultipleFileScanner ( const JMultipleFileScanner< JTypelist_t > &  input)
inline

Copy constructor.

Note that the counter limit is not copied and the index and counter are set to zero.

Parameters
inputinput

Definition at line 222 of file JMultipleFileScanner.hh.

222  :
223  index (0),
224  counter(0)
225  {
226  this->configure(input.getFilelist(), JLimit());
227  }
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.
template<class T = JNullType>
JSUPPORT::JMultipleFileScanner< T >::JMultipleFileScanner ( const input_type file_list,
const JLimit limit = JLimit() 
)
inline

Constructor.

Parameters
file_listlist of file names
limitlimit

Definition at line 236 of file JMultipleFileScanner.hh.

236  :
237  index (0),
238  counter(0)
239  {
240  configure(file_list, limit);
241  }
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.

Member Function Documentation

template<class T = JNullType>
const std::string& JSUPPORT::JMultipleFileScanner< T >::getFilename ( ) const
inline

Get current file name.

Note that this method should only be called when method hasNext() returns true.

Returns
file name

Definition at line 251 of file JMultipleFileScanner.hh.

252  {
253  return this->at(index);
254  }
template<class T = JNullType>
counter_type JSUPPORT::JMultipleFileScanner< T >::getCounter ( ) const
inline

Get counter.

Returns
counter

Definition at line 262 of file JMultipleFileScanner.hh.

263  {
264  return counter;
265  }
template<class T = JNullType>
virtual void JSUPPORT::JMultipleFileScanner< T >::rewind ( )
inlinevirtual

Rewind.

Implements JLANG::JRewindable< T >.

Reimplemented in JSUPPORT::JMultipleFileScanner< JTypeList< JHead_t, JTail_t > >, JSUPPORT::JMultipleFileScanner< Head >, and JSUPPORT::JMultipleFileScanner< JTriggerParameters >.

Definition at line 271 of file JMultipleFileScanner.hh.

272  {
273  if (scanner.is_open()) {
274  scanner.close();
275  }
276 
277  index = 0;
278  counter = 0;
279 
280  scanner.reset();
281  }
template<class T = JNullType>
virtual bool JSUPPORT::JMultipleFileScanner< T >::hasNext ( )
inlinevirtual

Check availability of next element.

Returns
true if the iteration has more elements; else false

Implements JLANG::JObjectIterator< T >.

Reimplemented in JSUPPORT::JTriggeredFileScanner< JTypelist_t >.

Definition at line 289 of file JMultipleFileScanner.hh.

290  {
291  if (is_valid()) {
292 
293  if (counter < getUpperLimit() && index != this->size()) {
294 
295  // first time around
296 
297  if (!scanner.is_open()) {
298  scanner.open(getFilename().c_str());
299  }
300 
301  if (counter < getLowerLimit()) {
302  counter += scanner.skip(getLowerLimit() - counter);
303  }
304 
305  if (!scanner.hasNext()) {
306 
307  scanner.close();
308 
309  ++index;
310 
311  return hasNext();
312  }
313 
314  return true;
315 
316  } else {
317 
318  // last time around
319 
320  if (scanner.is_open()) {
321  scanner.close();
322  }
323 
324  scanner.reset();
325  }
326  }
327 
328  return false;
329  }
const std::string & getFilename() const
Get current file name.
virtual bool hasNext()
Check availability of next element.
bool is_valid(const T &value)
Check validity of given value.
Definition: JHead.hh:711
template<class T = JNullType>
virtual const pointer_type& JSUPPORT::JMultipleFileScanner< T >::next ( )
inlinevirtual

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Reimplemented in JSUPPORT::JTriggeredFileScanner< JTypelist_t >, and JSUPPORT::JParallelFileScanner< JTypeList< JDAQEvent, JTypelist_t >, JMultipleFileScanner >.

Definition at line 337 of file JMultipleFileScanner.hh.

338  {
339  ++counter;
340 
341  return scanner.next();
342  }
template<class T = JNullType>
virtual skip_type JSUPPORT::JMultipleFileScanner< T >::skip ( const skip_type  ns)
inlinevirtual

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented in JSUPPORT::JMultipleFileScanner< JTypeList< JHead_t, JTail_t > >.

Definition at line 351 of file JMultipleFileScanner.hh.

352  {
353  skip_type i = 0;
354 
355  while (this->hasNext() && i != ns) {
356  i += scanner.skip(ns - i);
357  }
358 
359  counter += i;
360 
361  return i;
362  }
unsigned int skip_type
Type definition for number of objects to skip.
virtual bool hasNext()
Check availability of next element.
template<class T>
virtual skip_type JLANG::JObjectIterator< T >::skip ( const skip_type  ns)
inlinevirtualinherited

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented in JLANG::JPipe< T >, JLANG::JPipe< JTail_t >, JLANG::JPipe< JHead_t >, JLANG::JSTDObjectIterator< T >, JLANG::JAbstractObjectReader< T >, JLANG::JAbstractObjectReader< JNullType >, JLANG::JAbstractObjectReader< const T >, JLANG::JAbstractObjectReader< JTail_t >, JLANG::JAbstractObjectReader< JHead_t >, JLANG::JAbstractObjectReader< KM3NETDAQ::KM3NETDAQ::JDAQEvent >, JLANG::JAbstractObjectReader< JDAQSummaryslice >, and JLANG::JAbstractObjectReader< JTypeList< JDAQEvent, JTypelist_t > >.

Definition at line 88 of file JObjectIterator.hh.

89  {
90  skip_type i = 0;
91 
92  for ( ; i != ns && hasNext(); ++i) {
93  next();
94  }
95 
96  return i;
97  }
unsigned int skip_type
Type definition for number of objects to skip.
virtual const pointer_type & next()=0
Get next element.
virtual bool hasNext()=0
Check availability of next element.

Member Data Documentation

template<class T = JNullType>
JFileScanner<T> JSUPPORT::JMultipleFileScanner< T >::scanner
protected

Definition at line 366 of file JMultipleFileScanner.hh.

template<class T = JNullType>
unsigned int JSUPPORT::JMultipleFileScanner< T >::index
protected

Definition at line 367 of file JMultipleFileScanner.hh.

template<class T = JNullType>
counter_type JSUPPORT::JMultipleFileScanner< T >::counter
protected

Definition at line 368 of file JMultipleFileScanner.hh.


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