Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
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.
 
 JMultipleFileScanner (const JMultipleFileScanner_t &file_list)
 Copy constructor.
 
virtual void rewind () override
 Rewind.
 
virtual bool setObject (JTriggerParameters &object) override
 Set object.
 
const JTriggerParametersgetTriggerParameters ()
 Get trigger parameters.
 
const std::string & getFilename () const
 Get current file name.
 
counter_type getCounter () const
 Get counter.
 
virtual bool hasNext () override
 Check availability of next element.
 
virtual const pointer_typenext () override
 Get next element.
 
virtual skip_type skip (const skip_type ns) override
 Skip items.
 
virtual bool hasNext () override
 Check availability of next element.
 
virtual const pointer_typenext () override
 Get next element.
 
virtual bool setObject (T &object)=0
 Set object.
 

Protected Attributes

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

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

◆ pointer_type [1/2]

JRewindableObjectIterator<T>::pointer_type JSUPPORT::JMultipleFileScanner< T >::pointer_type
inherited

Definition at line 310 of file JMultipleFileScanner.hh.

◆ pointer_type [2/2]

template<class T >
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.
General exception.
Definition JException.hh:24
Object reading from file.
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.

◆ 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.
virtual const pointer_type & next() override

◆ 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
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()

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 from JLANG::JObjectIterator< T >.

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.

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