1 #ifndef __JSUPPORT__JMULTIPLEFILESCANNER__
2 #define __JSUPPORT__JMULTIPLEFILESCANNER__
10 #include "TChainElement.h"
29 namespace JPP {
using namespace JSUPPORT; }
62 std::
vector<std::string>(1, file_name)
72 std::
vector<std::string>(file_list)
83 const TObjArray* array = chain.GetListOfFiles();
85 for (Int_t i = 0; i != array->GetEntries(); ++i) {
87 const TChainElement* p = (
const TChainElement*) array->At(i);
89 this->push_back(p->GetTitle());
134 for (const_iterator i = file_list.begin(); i != file_list.end(); ++i) {
152 for (
string buffer; in >> buffer; ) {
156 ifstream
ls(buffer.c_str());
167 catch(
const exception&) {
168 object.addFilelist(buffer);
186 for (const_iterator i =
object.begin(); i !=
object.end(); ++i) {
187 out << *i << std::endl;
198 template<
class T = JNullType>
216 JTYPELIST<JLimit, JMultipleFileScanner_t>::typelist>
245 this->setLimit (limit);
260 return in >>
object.getFilelist();
275 return out <<
object.getFilelist();
314 template<
class JTypelist_t>
359 return this->at(index);
379 if (scanner.is_open()) {
399 if (counter < getUpperLimit() && index != this->size()) {
403 if (!scanner.is_open()) {
407 if (counter < getLowerLimit()) {
408 counter += scanner.skip(getLowerLimit() - counter);
411 if (!scanner.hasNext()) {
426 if (scanner.is_open()) {
447 return scanner.next();
461 while (this->hasNext() && i != ns) {
462 i += scanner.skip(ns - i);
488 template<
class JHead_t,
class JTail_t>
518 template<
class JTypelist_t>
571 throw JException(
"JMultipleFileScanner::skip(): inconsistent number of items skipped.");
579 template<
class JHead_t>
602 template<
class JTypelist_t>
JMultipleFileScanner_t(const std::vector< std::string > &file_list)
Constructor.
virtual skip_type skip(const skip_type ns) override
Skip items.
JMultipleFileScanner_t & getFilelist()
Get file list.
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
Interface for object iteration with rewinding.
JMultipleFileScanner()
Default constructor.
virtual ~JMultipleFileScanner()
Virtual destructor.
friend std::istream & operator>>(std::istream &in, JMultipleFileScanner_t &object)
Read file list from input.
JRewindableObjectIterator< T >::pointer_type pointer_type
JMultipleFileScanner()
Default constructor.
static JGlob getFilenames
Function object to get list of files for given pattern.
unsigned int skip_type
Type definition for number of objects to skip.
JMultipleFileScanner_t(const TChain &chain)
Constructor.
void setFilelist(const JMultipleFileScanner_t &file_list)
Set file list.
Long64_t counter_type
Type definition for counter.
JMultipleFileScanner_t(const std::string &file_name)
Constructor.
static const char *const FILE_LIST_FORMAT
file name extension ASCII format with list of file names
JMultipleFileScanner(const input_type &file_list)
Constructor.
friend std::istream & operator>>(std::istream &in, JMultipleFileScanner &object)
Read multiple file scanner from input.
void addFilelist(const JMultipleFileScanner_t &file_list)
Add file list.
Template definition of auxiliary base class for data structures composed of multiple base classes wit...
Auxiliary class for defining the range of iterations of objects.
JMultipleFileScanner_t()
Default constructor.
virtual bool hasNext() override
Check availability of next element.
Auxiliary class for recursive type list generation.
bool is_valid(const json &js)
Check validity of JSon data.
Auxiliary class for no type definition.
Template implementation of class that holds pointer to object(s).
JMultipleFileScanner(const input_type &file_list)
Constructor.
const JMultipleFileScanner_t & getFilelist() const
Get file list.
virtual void rewind() override
Rewind.
const std::string & getFilename() const
Get current file name.
JMultipleFileScanner(const input_type &file_list)
Constructor.
friend std::ostream & operator<<(std::ostream &out, const JMultipleFileScanner_t &object)
Write file list to output.
JMultipleFileScanner(const JMultipleFileScanner< JTypelist_t > &input)
Copy constructor.
JFileScanner< T > scanner
JMultipleFileScanner(const input_type &file_list, const JLimit &limit)
Constructor.
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.
std::string getFilenameExtension(const std::string &file_name)
Get file name extension, i.e. part after last JEEP::FILENAME_SEPARATOR if any.
virtual const pointer_type & next() override
Get next element.
friend std::ostream & operator<<(std::ostream &out, const JMultipleFileScanner &object)
Write multiple file scanner to output.
Auxiliary data structure to list files in directory.
Object reading from file.
void configure(const input_type &input, const JLimit &limit)
Configure.
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
counter_type getCounter() const
Get counter.
JMultipleFileScanner(const input_type &file_list, const JLimit &limit)
Constructor.
JMultipleFileScanner::input_type input_type
Auxiliaries for defining the range of iterations of objects.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
JMultipleFileScanner::input_type input_type
virtual void rewind() override
Rewind.
JMultipleFileScanner()
Default constructor.
virtual skip_type skip(const skip_type ns) override
Skip items.
JMultipleFileScanner(const input_type &file_list, const JLimit &limit)
Constructor.
JMultipleFileScanner_t input_type
JMultipleFileScanner()
Default constructor.