ESyS-Particle  2.3.4
IterativeReader.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSMITERATIVEREADER_H
15 #define ESYS_LSMITERATIVEREADER_H
16 
17 #include <sstream>
18 #include <memory>
19 
20 namespace esys
21 {
22  namespace lsm
23  {
27  template <class TmplData>
29  {
30  public:
31  typedef TmplData value_type;
32 
33  IStreamIterator(std::istream &iStream, int numElements);
34 
35  virtual ~IStreamIterator();
36 
41  bool hasNext() const;
42 
46  const TmplData &next();
47 
51  int getNumRemaining() const;
52 
53  protected:
56 
57  virtual void readDataFromStream();
58 
59  std::istream *m_pIStream;
60  TmplData m_data;
62  };
63 
73  template <class TmplIterator>
75  {
76  public:
77  typedef TmplIterator Iterator;
78 
79  IterativeReader(std::istream &iStream);
80 
81  virtual ~IterativeReader();
82 
87  virtual void initialise();
88 
92  int getNumElements() const;
93 
98  bool isInitialised() const;
99 
101 
102  protected:
103  typedef std::auto_ptr<Iterator> IteratorAutoPtr;
104 
105  void setNumElements(int numElements);
106 
107  std::istream &getIStream();
108 
109  const std::istream &getIStream() const;
110 
115  virtual Iterator *createNewIterator();
116 
117  private:
118 
120  std::istream *m_pIStream;
122  };
123  }
124 }
125 
127 
128 #endif
esys::lsm::IterativeReader::m_pIStream
std::istream * m_pIStream
Definition: IterativeReader.h:120
esys::lsm::IStreamIterator::m_pIStream
std::istream * m_pIStream
Definition: IterativeReader.h:59
esys::lsm::IterativeReader::createNewIterator
virtual Iterator * createNewIterator()
Definition: IterativeReader.hpp:95
esys::lsm::IterativeReader::setNumElements
void setNumElements(int numElements)
Definition: IterativeReader.hpp:77
esys::lsm::IStreamIterator::IStreamIterator
IStreamIterator(std::istream &iStream, int numElements)
Definition: IterativeReader.hpp:19
esys::lsm::IterativeReader::getIStream
std::istream & getIStream()
Definition: IterativeReader.hpp:83
esys::lsm::IStreamIterator::next
const TmplData & next()
Definition: IterativeReader.hpp:43
esys::lsm::IStreamIterator::m_data
TmplData m_data
Definition: IterativeReader.h:60
esys::lsm::IterativeReader::getNumElements
int getNumElements() const
Definition: IterativeReader.hpp:71
esys::lsm::IStreamIterator::getNumRemaining
int getNumRemaining() const
Definition: IterativeReader.hpp:51
esys::lsm::IterativeReader::Iterator
TmplIterator Iterator
Definition: IterativeReader.h:77
esys::lsm::IStreamIterator::m_numRemaining
int m_numRemaining
Definition: IterativeReader.h:61
esys::lsm::IterativeReader::~IterativeReader
virtual ~IterativeReader()
Definition: IterativeReader.hpp:66
esys::lsm::IStreamIterator::readDataFromStream
virtual void readDataFromStream()
Definition: IterativeReader.hpp:37
esys::lsm::IStreamIterator::~IStreamIterator
virtual ~IStreamIterator()
Definition: IterativeReader.hpp:26
esys
Definition: CheckPointable.cpp:17
esys::lsm::IterativeReader::m_numElements
int m_numElements
Definition: IterativeReader.h:119
esys::lsm::IterativeReader::isInitialised
bool isInitialised() const
Definition: IterativeReader.hpp:107
esys::lsm::IterativeReader::m_iteratorPtr
IteratorAutoPtr m_iteratorPtr
Definition: IterativeReader.h:121
esys::lsm::IterativeReader::initialise
virtual void initialise()
Definition: IterativeReader.hpp:101
esys::lsm::IterativeReader::getIterator
Iterator & getIterator()
Definition: IterativeReader.hpp:113
esys::lsm::IterativeReader::IteratorAutoPtr
std::auto_ptr< Iterator > IteratorAutoPtr
Definition: IterativeReader.h:103
esys::lsm::IStreamIterator::hasNext
bool hasNext() const
Definition: IterativeReader.hpp:31
esys::lsm::IStreamIterator::operator=
IStreamIterator & operator=(const IStreamIterator &it)
esys::lsm::IStreamIterator::IStreamIterator
IStreamIterator(const IStreamIterator &it)
esys::lsm::IterativeReader::IterativeReader
IterativeReader(std::istream &iStream)
Definition: IterativeReader.hpp:58
esys::lsm::IterativeReader
Definition: IterativeReader.h:75
esys::lsm::IStreamIterator
Definition: IterativeReader.h:29
esys::lsm::IStreamIterator::value_type
TmplData value_type
Definition: IterativeReader.h:31
IterativeReader.hpp