1 #ifndef __JSUPPORT__JMULTIPLEFILESCANNER__
2 #define __JSUPPORT__JMULTIPLEFILESCANNER__
9 #include "TChainElement.h"
27 namespace JPP {
using namespace JSUPPORT; }
60 std::vector<std::string>(1, file_name)
71 const TObjArray* array = chain.GetListOfFiles();
73 for (Int_t i = 0; i != array->GetEntries(); ++i) {
75 const TChainElement* p = (
const TChainElement*) array->At(i);
77 this->push_back(p->GetTitle());
97 template<
class T = JNullType>
114 JTYPELIST<JLimit, JMultipleFileScanner_t>::typelist>
144 this->setLimit(limit);
159 for (std::string buffer; in >> buffer; ) {
160 file_list.push_back(buffer.c_str());
178 for (const_iterator i = file_list.begin(); i != file_list.end(); ++i) {
179 out << *i << std::endl;
198 public JRewindableObjectIterator<T>
221 template<
class JTypelist_t>
253 return this->at(
index);
293 if (
counter < getUpperLimit() &&
index != this->size()) {
301 if (
counter < getLowerLimit()) {
355 while (this->
hasNext() && i != ns) {
382 template<
class JHead_t,
class JTail_t>
412 template<
class JTypelist_t>
454 throw JException(
"JMultipleFileScanner::skip(): inconsistent number of items skipped.");
462 template<
class JHead_t>
485 template<
class JTypelist_t>
virtual const pointer_type & next()
Get next element.
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
Interface for object iteration with rewinding.
JMultipleFileScanner()
Default constructor.
virtual ~JMultipleFileScanner()
Virtual destructor.
JRewindableObjectIterator< T >::pointer_type pointer_type
JMultipleFileScanner()
Default constructor.
unsigned int skip_type
Type definition for number of objects to skip.
JMultipleFileScanner_t(const TChain &chain)
Constructor.
Long64_t counter_type
Type definition for counter.
virtual skip_type skip(const skip_type ns)
Skip items.
JMultipleFileScanner_t(const std::string &file_name)
Constructor.
Template definition of auxiliary base class for composite data structures composed of base classes wi...
friend std::ostream & operator<<(std::ostream &out, const JMultipleFileScanner &file_list)
Write multiple file scanner to output.
Auxiliary class for defining the range of iterations of objects.
friend std::istream & operator>>(std::istream &in, JMultipleFileScanner &file_list)
Read multiple file scanner from input.
JMultipleFileScanner_t()
Default constructor.
Auxiliary class for recursive type list generation.
Auxiliary class for no type definition.
Template implementation of class that holds pointer to object(s).
const JMultipleFileScanner_t & getFilelist() const
Get file list.
const std::string & getFilename() const
Get current file name.
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
virtual bool hasNext()
Check availability of next element.
JFileScanner< T > scanner
Auxiliary base class for list of file names.
JMultipleFileScanner::input_type input_type
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
General purpose class for object reading from a list of file names.
virtual skip_type skip(const skip_type ns)
Skip items.
JMultipleFileScanner(const input_type &file_list, const JLimit &limit=JLimit())
Constructor.
Object reading from file.
void configure(const input_type &input, const JLimit &limit)
Configure.
counter_type getCounter() const
Get counter.
JMultipleFileScanner::input_type input_type
virtual void rewind()
Rewind.
Auxiliaries for defining the range of iterations of objects.
JMultipleFileScanner::input_type input_type
bool is_valid(const T &value)
Check validity of given value.
JMultipleFileScanner()
Default constructor.
JMultipleFileScanner_t input_type
virtual void rewind()
Rewind.
JMultipleFileScanner()
Default constructor.