Jpp  debug
the software that should make you happy
Public Types | Public Member Functions | Protected Attributes | Private Attributes | List of all members
JSUPPORT::JMultipleFileScanner< JTriggerParameters > Class Referenceabstract

Template specialisation of JMultipleFileScanner for trigger parameters. More...

#include <JTriggerParametersSupportkit.hh>

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

Public Types

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

Public Member Functions

 JMultipleFileScanner ()
 Default constructor. More...
 
 JMultipleFileScanner (const JMultipleFileScanner_t &file_list)
 Copy constructor. More...
 
virtual void rewind () override
 Rewind. More...
 
virtual bool setObject (JTriggerParameters &object) override
 Set object. More...
 
const JTriggerParametersgetTriggerParameters ()
 Get trigger parameters. More...
 
const std::string & getFilename () const
 Get current file name. More...
 
counter_type getCounter () const
 Get counter. 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...
 
virtual bool hasNext () override
 Check availability of next element. More...
 
virtual const pointer_typenext () override
 Get next element. More...
 
virtual bool setObject (T &object)=0
 Set object. More...
 

Protected Attributes

JFileScanner< T > scanner
 
unsigned int index
 
counter_type counter
 
object
 object More...
 
bool has_next
 status More...
 

Private Attributes

bool do_next
 
pointer_type ps
 

Detailed Description

Template specialisation of JMultipleFileScanner for trigger parameters.

This class re-implements the methods rewind and setObject of the JLANG::JRewindableAbstractObjectIterator interface so that all trigger parameter objects in the complete file list are read and checked for consistency.

Definition at line 32 of file JTriggerParametersSupportkit.hh.

Member Typedef Documentation

◆ input_type

Definition at line 309 of file JMultipleFileScanner.hh.

◆ pointer_type [1/2]

Definition at line 310 of file JMultipleFileScanner.hh.

◆ pointer_type [2/2]

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

Definition at line 39 of file JAbstractObjectIterator.hh.

Constructor & Destructor Documentation

◆ JMultipleFileScanner() [1/2]

◆ JMultipleFileScanner() [2/2]

Copy constructor.

The file list is copied.

Parameters
file_listJMultipleFileScanner

Definition at line 53 of file JTriggerParametersSupportkit.hh.

53  :
56  do_next(true)
57  {
58  configure(file_list, JLimit());
59  }
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:45

Member Function Documentation

◆ rewind()

virtual void JSUPPORT::JMultipleFileScanner< JTriggerParameters >::rewind ( )
inlineoverridevirtual

Rewind.

Reimplemented from JSUPPORT::JMultipleFileScanner<>.

Definition at line 65 of file JTriggerParametersSupportkit.hh.

66  {
67  do_next = true;
68  }

◆ setObject() [1/2]

virtual bool JSUPPORT::JMultipleFileScanner< JTriggerParameters >::setObject ( JTriggerParameters object)
inlineoverridevirtual

Set object.

Parameters
objectreference to object to be set
Returns
true if set; else false

Definition at line 77 of file JTriggerParametersSupportkit.hh.

78  {
79  if (do_next) {
80 
81  using namespace JLANG;
82 
83  object = JTriggerParameters();
84  do_next = false;
85 
86  unsigned int count = 0;
87 
89 
90  for (const_iterator i = this->begin(); i != this->end(); ++i) {
91 
92  scanner.open(i->c_str());
93 
94  if (scanner.hasNext()) {
95 
96  const JTriggerParameters* __p = scanner.next();
97 
98  if (count == 0)
99  object = *__p;
100  else if (!object.equals(*__p))
101  THROW(JException, "JMultipleFileScanner<JTriggerParameters>::setObject(): inconsistent trigger parameters.");
102 
103  ++count;
104  }
105 
106  scanner.close();
107  }
108 
109  return count != 0;
110 
111  } else {
112 
113  return false;
114  }
115  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
General exception.
Definition: JException.hh:24
Object reading from file.
Definition: JFileScanner.hh:39
Auxiliary classes and methods for language specific functionality.
bool equals(const JFirst_t &first, const JSecond_t &second, const double precision=std::numeric_limits< double >::min())
Check equality.
Definition: JMathToolkit.hh:87

◆ getTriggerParameters()

const JTriggerParameters& JSUPPORT::JMultipleFileScanner< JTriggerParameters >::getTriggerParameters ( )
inline

Get trigger parameters.

Returns
trigger parameters

Definition at line 123 of file JTriggerParametersSupportkit.hh.

124  {
125  const JTriggerParameters* p = NULL;
126 
127  if (!this->hasNext() || (p = this->next()) == NULL) {
128  THROW(JNullPointerException, "JMultipleFileScanner<JTriggerParameters>::getTriggerParameters(): Missing trigger parameters.");
129  }
130 
131  rewind();
132 
133  return *p;
134  }
Exception for null pointer operation.
Definition: JException.hh:234
virtual bool hasNext() override
Check availability of next element.
virtual const pointer_type & next() override
Get next element.

◆ getFilename()

const std::string& JSUPPORT::JMultipleFileScanner< T >::getFilename ( ) const
inlineinherited

Get current file name.

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

Returns
file name

Definition at line 371 of file JMultipleFileScanner.hh.

372  {
373  return this->at(index);
374  }

◆ getCounter()

counter_type JSUPPORT::JMultipleFileScanner< T >::getCounter ( ) const
inlineinherited

Get counter.

Returns
counter

Definition at line 382 of file JMultipleFileScanner.hh.

383  {
384  return counter;
385  }

◆ hasNext() [1/2]

virtual bool JSUPPORT::JMultipleFileScanner< 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 409 of file JMultipleFileScanner.hh.

410  {
411  if (is_valid()) {
412 
413  if (counter < getUpperLimit() && index != this->size()) {
414 
415  // first time around
416 
417  if (!scanner.is_open()) {
418  scanner.open(getFilename().c_str());
419  }
420 
421  if (counter < getLowerLimit()) {
422  counter += scanner.skip(getLowerLimit() - counter);
423  }
424 
425  if (!scanner.hasNext()) {
426 
427  scanner.close();
428 
429  ++index;
430 
431  return hasNext();
432  }
433 
434  return true;
435 
436  } else {
437 
438  // last time around
439 
440  if (scanner.is_open()) {
441  scanner.close();
442  }
443 
444  scanner.reset();
445  }
446  }
447 
448  return false;
449  }
const std::string & getFilename() const
Get current file name.
bool is_valid(const json &js)
Check validity of JSon data.

◆ next() [1/2]

virtual const pointer_type& JSUPPORT::JMultipleFileScanner< T >::next ( )
inlineoverridevirtualinherited

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 457 of file JMultipleFileScanner.hh.

458  {
459  ++counter;
460 
461  return scanner.next();
462  }

◆ skip() [1/2]

virtual skip_type JSUPPORT::JMultipleFileScanner< T >::skip ( const skip_type  ns)
inlineoverridevirtualinherited

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

472  {
473  skip_type i = 0;
474 
475  while (this->hasNext() && i != ns) {
476  i += scanner.skip(ns - i);
477  }
478 
479  counter += i;
480 
481  return i;
482  }
unsigned int skip_type
Type definition for number of objects to skip.
std::vector< size_t > ns

◆ skip() [2/2]

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::JSTDObjectIterator< T >, JLANG::JPipe< T >, JLANG::JPipe< JTail_t >, JLANG::JPipe< JHead_t >, and JLANG::JAbstractObjectReader< 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  }
virtual const pointer_type & next()=0
Get next element.
virtual bool hasNext()=0
Check availability of next element.

◆ hasNext() [2/2]

template<class T >
virtual bool JLANG::JAbstractObjectIterator< 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 56 of file JAbstractObjectIterator.hh.

57  {
58  if (!has_next) {
59  has_next = this->setObject(object);
60  }
61 
62  return has_next;
63  }
virtual bool setObject(T &object)=0
Set object.

◆ next() [2/2]

template<class T >
virtual const pointer_type& JLANG::JAbstractObjectIterator< T >::next ( )
inlineoverridevirtualinherited

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 71 of file JAbstractObjectIterator.hh.

72  {
73  if (has_next)
74  ps.reset(&this->object);
75  else
76  ps.reset(NULL);
77 
78  has_next = false;
79 
80  return ps;
81  }
virtual void reset() override
Reset pointer.
Definition: JPointer.hh:84

◆ setObject() [2/2]

template<class T >
virtual bool JLANG::JAbstractObjectIterator< T >::setObject ( T &  object)
pure virtualinherited

Member Data Documentation

◆ do_next

Definition at line 138 of file JTriggerParametersSupportkit.hh.

◆ scanner

JFileScanner<T> JSUPPORT::JMultipleFileScanner< T >::scanner
protectedinherited

Definition at line 486 of file JMultipleFileScanner.hh.

◆ index

unsigned int JSUPPORT::JMultipleFileScanner< T >::index
protectedinherited

Definition at line 487 of file JMultipleFileScanner.hh.

◆ counter

counter_type JSUPPORT::JMultipleFileScanner< T >::counter
protectedinherited

Definition at line 488 of file JMultipleFileScanner.hh.

◆ object

template<class T >
T JLANG::JAbstractObjectIterator< T >::object
protectedinherited

object

Definition at line 34 of file JAbstractObjectIterator.hh.

◆ has_next

template<class T >
bool JLANG::JAbstractObjectIterator< T >::has_next
protectedinherited

status

Definition at line 35 of file JAbstractObjectIterator.hh.

◆ ps

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

Definition at line 84 of file JAbstractObjectIterator.hh.


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