Jpp
Public Types | Public Member Functions | Protected Attributes | List of all members
JSUPPORT::JSingleFileScanner< T > Class Template Reference

Object reading from a list of files. More...

#include <JSingleFileScanner.hh>

Inheritance diagram for JSUPPORT::JSingleFileScanner< T >:
JLANG::JRewindableObjectIterator< T > JLANG::JObjectIterator< T > JLANG::JRewindable< T >

Public Types

typedef JSingleFileScanner ::input_type input_type
 
typedef JRewindableObjectIterator< T >::pointer_type pointer_type
 

Public Member Functions

 JSingleFileScanner ()
 Default constructor. More...
 
template<class JTypelist_t >
 JSingleFileScanner (const JSingleFileScanner< JTypelist_t > &input)
 Copy constructor. More...
 
 JSingleFileScanner (const input_type &file_name, const JLimit &limit=JLimit())
 Constructor. More...
 
counter_type getCounter () const
 Get counter. More...
 
virtual void rewind ()
 Rewind. More...
 
virtual bool hasNext ()
 Check availability of next element. More...
 
virtual const pointer_typenext ()
 Get next element. More...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 

Protected Attributes

JFileScanner< T > scanner
 
counter_type counter
 

Detailed Description

template<class T>
class JSUPPORT::JSingleFileScanner< T >

Object reading from a list of files.

Object reading from a single file name.

This class implements the JLANG::JRewindableObjectIterator interface.

Definition at line 75 of file JSingleFileScanner.hh.

Member Typedef Documentation

◆ input_type

Definition at line 164 of file JSingleFileScanner.hh.

◆ pointer_type

Definition at line 165 of file JSingleFileScanner.hh.

Constructor & Destructor Documentation

◆ JSingleFileScanner() [1/3]

template<class T>
JSUPPORT::JSingleFileScanner< T >::JSingleFileScanner ( )
inline

Default constructor.

Definition at line 170 of file JSingleFileScanner.hh.

170  :
171  counter(0)
172  {}

◆ JSingleFileScanner() [2/3]

template<class T>
template<class JTypelist_t >
JSUPPORT::JSingleFileScanner< T >::JSingleFileScanner ( const JSingleFileScanner< JTypelist_t > &  input)
inline

Copy constructor.

Note that the counter limit is not copied and the counter is set to zero.

Parameters
inputinput

Definition at line 183 of file JSingleFileScanner.hh.

183  :
184  counter(0)
185  {
186  this->configure(input.getFilename(), JLimit());
187  }

◆ JSingleFileScanner() [3/3]

template<class T>
JSUPPORT::JSingleFileScanner< T >::JSingleFileScanner ( const input_type file_name,
const JLimit limit = JLimit() 
)
inline

Constructor.

Parameters
file_namefile name
limitlimit

Definition at line 196 of file JSingleFileScanner.hh.

196  :
197  counter(0)
198  {
199  this->configure(file_name, limit);
200  }

Member Function Documentation

◆ getCounter()

template<class T>
counter_type JSUPPORT::JSingleFileScanner< T >::getCounter ( ) const
inline

Get counter.

Returns
counter

Definition at line 208 of file JSingleFileScanner.hh.

209  {
210  return counter;
211  }

◆ rewind()

template<class T>
virtual void JSUPPORT::JSingleFileScanner< T >::rewind ( )
inlinevirtual

Rewind.

Implements JLANG::JRewindable< T >.

Reimplemented in JSUPPORT::JSingleFileScanner< JTypeList< JHead_t, JTail_t > >.

Definition at line 217 of file JSingleFileScanner.hh.

218  {
219  if (scanner.is_open()) {
220  scanner.close();
221  }
222 
223  counter = 0;
224 
225  scanner.reset();
226  }

◆ hasNext()

template<class T>
virtual bool JSUPPORT::JSingleFileScanner< T >::hasNext ( )
inlinevirtual

Check availability of next element.

Returns
true if the iteration has more elements; else false

Implements JLANG::JObjectIterator< T >.

Definition at line 234 of file JSingleFileScanner.hh.

235  {
236  if (is_valid()) {
237 
238  if (counter < getUpperLimit()) {
239 
240  // first time around
241 
242  if (!scanner.is_open()) {
243  scanner.open(this->getFilename().c_str());
244  }
245 
246  if (counter < getLowerLimit()) {
247  counter += scanner.skip(getLowerLimit() - counter);
248  }
249 
250  if (!scanner.hasNext()) {
251 
252  scanner.close();
253 
254  return false;
255  }
256 
257  return true;
258 
259  } else {
260 
261  // last time around
262 
263  if (scanner.is_open()) {
264  scanner.close();
265  }
266 
267  scanner.reset();
268  }
269  }
270 
271  return false;
272  }

◆ next()

template<class T>
virtual const pointer_type& JSUPPORT::JSingleFileScanner< T >::next ( )
inlinevirtual

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 280 of file JSingleFileScanner.hh.

281  {
282  ++counter;
283 
284  return scanner.next();
285  }

◆ skip() [1/2]

template<class T>
virtual skip_type JSUPPORT::JSingleFileScanner< T >::skip ( const skip_type  ns)
inlinevirtual

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented in JSUPPORT::JSingleFileScanner< JTypeList< JHead_t, JTail_t > >.

Definition at line 294 of file JSingleFileScanner.hh.

295  {
296  const skip_type previous = counter;
297 
298  counter += scanner.skip(ns);
299 
300  return counter - previous;
301  }

◆ skip() [2/2]

template<class T>
virtual skip_type JLANG::JObjectIterator< T >::skip ( const skip_type  ns)
inlinevirtualinherited

Member Data Documentation

◆ scanner

template<class T>
JFileScanner<T> JSUPPORT::JSingleFileScanner< T >::scanner
protected

Definition at line 305 of file JSingleFileScanner.hh.

◆ counter

template<class T>
counter_type JSUPPORT::JSingleFileScanner< T >::counter
protected

Definition at line 306 of file JSingleFileScanner.hh.


The documentation for this class was generated from the following file:
JLANG::skip_type
unsigned int skip_type
Type definition for number of objects to skip.
Definition: JObjectIterator.hh:25
JSUPPORT::JLimit
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
JAANET::is_valid
bool is_valid(const T &value)
Check validity of given value.
Definition: JHead.hh:823
JLANG::JObjectIterator::hasNext
virtual bool hasNext()=0
Check availability of next element.
JSUPPORT::JSingleFileScanner::counter
counter_type counter
Definition: JSingleFileScanner.hh:306
JSUPPORT::JSingleFileScanner::scanner
JFileScanner< T > scanner
Definition: JSingleFileScanner.hh:305
JEEP::getFilename
std::string getFilename(const std::string &file_name)
Get file name part, i.e.
Definition: JeepToolkit.hh:86
JTOOLS::configure
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.
Definition: JToolsToolkit.hh:285
JLANG::JObjectIterator::next
virtual const pointer_type & next()=0
Get next element.