1 #ifndef __JSUPPORT__JMULTIPLEFILESCANNER__ 
    2 #define __JSUPPORT__JMULTIPLEFILESCANNER__ 
    9 #pragma GCC diagnostic push 
   10 #pragma GCC diagnostic ignored "-Wall" 
   12 #include "TChainElement.h" 
   13 #pragma GCC diagnostic pop 
   86       const TObjArray* 
array = chain.GetListOfFiles();
 
   88       for (Int_t i = 0; i != 
array->GetEntries(); ++i) {
 
   90         const TChainElement* p = (
const TChainElement*) 
array->At(i);
 
   92         this->push_back(p->GetTitle());
 
  137       for (const_iterator i = file_list.begin(); i != file_list.end(); ++i) {
 
  155       for (
string buffer; in >> buffer; ) {
 
  159           ifstream 
ls(buffer.c_str());
 
  170           catch(
const exception&) {
 
  171             object.addFilelist(buffer);
 
  189       for (const_iterator i = 
object.begin(); i != 
object.end(); ++i) {
 
  190         out << *i << std::endl;
 
  201   template<
class T = JNullType>
 
  219                         JTYPELIST<JLimit, JMultipleFileScanner_t>::typelist>
 
  248       this->setLimit   (limit);
 
  274       return in >> 
object.getFilelist();
 
  289       return out << 
object.getFilelist();
 
  328     template<
class JTypelist_t>
 
  373       return this->at(index);
 
  393       if (scanner.is_open()) {
 
  413         if (counter < getUpperLimit() && index != this->size()) {
 
  417           if (!scanner.is_open()) {
 
  421           if (counter < getLowerLimit()) {
 
  422             counter += scanner.skip(getLowerLimit() - counter);
 
  425           if (!scanner.hasNext()) {
 
  440           if (scanner.is_open()) {
 
  461       return scanner.next();
 
  475       while (this->hasNext() && i != 
ns) {
 
  476         i += scanner.skip(
ns - i);
 
  502   template<
class JHead_t, 
class JTail_t>
 
  532     template<
class JTypelist_t>
 
  585         THROW(
JException, 
"JMultipleFileScanner::skip(): inconsistent number of items skipped.");
 
  593   template<
class JHead_t>
 
  616     template<
class JTypelist_t>
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
Auxiliaries for defining the range of iterations of objects.
 
Template implementation of class that holds pointer to object(s).
 
Interface for object iteration with rewinding.
 
Object reading from file.
 
void configure(const input_type &input)
Configure.
 
virtual ~JMultipleFileScanner()
Virtual destructor.
 
JMultipleFileScanner_t input_type
 
friend std::istream & operator>>(std::istream &in, JMultipleFileScanner &object)
Read multiple file scanner from input.
 
friend std::ostream & operator<<(std::ostream &out, const JMultipleFileScanner &object)
Write multiple file scanner to output.
 
JMultipleFileScanner()
Default constructor.
 
void configure(const input_type &input, const JLimit &limit)
Configure.
 
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
 
JMultipleFileScanner(const input_type &file_list)
Constructor.
 
JMultipleFileScanner(const input_type &file_list, const JLimit &limit)
Constructor.
 
JMultipleFileScanner()
Default constructor.
 
JMultipleFileScanner ::input_type input_type
 
virtual skip_type skip(const skip_type ns) override
Skip items.
 
JMultipleFileScanner ::input_type input_type
 
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
 
JMultipleFileScanner(const input_type &file_list)
Constructor.
 
virtual void rewind() override
Rewind.
 
JMultipleFileScanner()
Default constructor.
 
JMultipleFileScanner(const input_type &file_list, const JLimit &limit)
Constructor.
 
General purpose class for object reading from a list of file names.
 
virtual void rewind() override
Rewind.
 
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
 
virtual bool hasNext() override
Check availability of next element.
 
JMultipleFileScanner ::input_type input_type
 
counter_type getCounter() const
Get counter.
 
JMultipleFileScanner()
Default constructor.
 
virtual const pointer_type & next() override
Get next element.
 
JMultipleFileScanner(const input_type &file_list)
Constructor.
 
JMultipleFileScanner(const input_type &file_list, const JLimit &limit)
Constructor.
 
virtual skip_type skip(const skip_type ns) override
Skip items.
 
const std::string & getFilename() const
Get current file name.
 
JRewindableObjectIterator< T >::pointer_type pointer_type
 
JFileScanner< T > scanner
 
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
 
std::string getFilenameExtension(const std::string &file_name)
Get file name extension, i.e. part after last JEEP::FILENAME_SEPARATOR if any.
 
unsigned int skip_type
Type definition for number of objects to skip.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Long64_t counter_type
Type definition for counter.
 
bool is_valid(const json &js)
Check validity of JSon data.
 
Support classes and methods for experiment specific I/O.
 
static const char *const FILE_LIST_FORMAT
file name extension ASCII format with list of file names
 
static JGlob getFilenames
Function object to get list of files for given pattern.
 
Template definition of auxiliary base class for data structures composed of multiple base classes wit...
 
Auxiliary class for no type definition.
 
Auxiliary class for recursive type list generation.
 
Auxiliary class for defining the range of iterations of objects.
 
Auxiliary base class for list of file names.
 
friend std::ostream & operator<<(std::ostream &out, const JMultipleFileScanner_t &object)
Write file list to output.
 
JMultipleFileScanner_t & getFilelist()
Get file list.
 
JMultipleFileScanner_t(const std::string &file_name)
Constructor.
 
friend std::istream & operator>>(std::istream &in, JMultipleFileScanner_t &object)
Read file list from input.
 
void setFilelist(const JMultipleFileScanner_t &file_list)
Set file list.
 
JMultipleFileScanner_t()
Default constructor.
 
void addFilelist(const JMultipleFileScanner_t &file_list)
Add file list.
 
JMultipleFileScanner_t(const std::vector< std::string > &file_list)
Constructor.
 
const JMultipleFileScanner_t & getFilelist() const
Get file list.
 
JMultipleFileScanner_t(const TChain &chain)
Constructor.
 
Auxiliary data structure to list files in directory.