Jpp  15.0.4
the software that should make you happy
 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)
 Constructor. More...
 
 JMultipleFileScanner (const input_type &file_list, const JLimit &limit)
 Constructor. More...
 
const std::string & getFilename () const
 Get current file name. More...
 
counter_type getCounter () const
 Get counter. More...
 
virtual void rewind () override
 Rewind. 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...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 

Protected Attributes

JFileScanner< Tscanner
 
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 183 of file JMultipleFileScanner.hh.

Member Typedef Documentation

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

Definition at line 279 of file JMultipleFileScanner.hh.

Definition at line 280 of file JMultipleFileScanner.hh.

Constructor & Destructor Documentation

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

Default constructor.

Definition at line 285 of file JMultipleFileScanner.hh.

285  :
286  index (0),
287  counter(0)
288  {}
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 299 of file JMultipleFileScanner.hh.

299  :
300  index (0),
301  counter(0)
302  {
303  this->configure(input.getFilelist(), JLimit());
304  }
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)
inline

Constructor.

Parameters
file_listlist of file names

Definition at line 312 of file JMultipleFileScanner.hh.

312  :
313  index (0),
314  counter(0)
315  {
316  configure(file_list, JLimit());
317  }
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 
)
inline

Constructor.

Parameters
file_listlist of file names
limitlimit

Definition at line 326 of file JMultipleFileScanner.hh.

326  :
327  index (0),
328  counter(0)
329  {
330  configure(file_list, limit);
331  }
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 341 of file JMultipleFileScanner.hh.

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

Get counter.

Returns
counter

Definition at line 352 of file JMultipleFileScanner.hh.

353  {
354  return counter;
355  }
template<class T = JNullType>
virtual void JSUPPORT::JMultipleFileScanner< T >::rewind ( )
inlineoverridevirtual

Rewind.

Implements JLANG::JRewindable< T >.

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

Definition at line 361 of file JMultipleFileScanner.hh.

362  {
363  if (scanner.is_open()) {
364  scanner.close();
365  }
366 
367  index = 0;
368  counter = 0;
369 
370  scanner.reset();
371  }
template<class T = JNullType>
virtual bool JSUPPORT::JMultipleFileScanner< T >::hasNext ( )
inlineoverridevirtual

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 379 of file JMultipleFileScanner.hh.

380  {
381  if (is_valid()) {
382 
383  if (counter < getUpperLimit() && index != this->size()) {
384 
385  // first time around
386 
387  if (!scanner.is_open()) {
388  scanner.open(getFilename().c_str());
389  }
390 
391  if (counter < getLowerLimit()) {
392  counter += scanner.skip(getLowerLimit() - counter);
393  }
394 
395  if (!scanner.hasNext()) {
396 
397  scanner.close();
398 
399  ++index;
400 
401  return hasNext();
402  }
403 
404  return true;
405 
406  } else {
407 
408  // last time around
409 
410  if (scanner.is_open()) {
411  scanner.close();
412  }
413 
414  scanner.reset();
415  }
416  }
417 
418  return false;
419  }
virtual bool hasNext() override
Check availability of next element.
bool is_valid(const json &js)
Check validity of JSon data.
const std::string & getFilename() const
Get current file name.
template<class T = JNullType>
virtual const pointer_type& JSUPPORT::JMultipleFileScanner< T >::next ( )
inlineoverridevirtual

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 427 of file JMultipleFileScanner.hh.

428  {
429  ++counter;
430 
431  return scanner.next();
432  }
template<class T = JNullType>
virtual skip_type JSUPPORT::JMultipleFileScanner< T >::skip ( const skip_type  ns)
inlineoverridevirtual

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 441 of file JMultipleFileScanner.hh.

442  {
443  skip_type i = 0;
444 
445  while (this->hasNext() && i != ns) {
446  i += scanner.skip(ns - i);
447  }
448 
449  counter += i;
450 
451  return i;
452  }
unsigned int skip_type
Type definition for number of objects to skip.
virtual bool hasNext() override
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 90 of file JObjectIterator.hh.

91  {
92  skip_type i = 0;
93 
94  for ( ; i != ns && hasNext(); ++i) {
95  next();
96  }
97 
98  return i;
99  }
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 456 of file JMultipleFileScanner.hh.

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

Definition at line 457 of file JMultipleFileScanner.hh.

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

Definition at line 458 of file JMultipleFileScanner.hh.


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