ESyS-Particle  2.3.4
IterativeReader.hpp
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 namespace esys
15 {
16  namespace lsm
17  {
18  template <class TmplData>
19  IStreamIterator<TmplData>::IStreamIterator(std::istream &iStream, int numParticles)
20  : m_pIStream(&iStream),
21  m_numRemaining(numParticles)
22  {
23  }
24 
25  template <class TmplData>
27  {
28  }
29 
30  template <class TmplData>
32  {
33  return (m_numRemaining > 0);
34  }
35 
36  template <class TmplData>
38  {
39  m_data.read(*m_pIStream);
40  }
41 
42  template <class TmplData>
44  {
45  m_numRemaining--;
46  readDataFromStream();
47  return m_data;
48  }
49 
50  template <class TmplData>
52  {
53  return m_numRemaining;
54  }
55 
56 //===============================================================================
57  template <class TmplIterator>
59  : m_numElements(-1),
60  m_pIStream(&iStream),
61  m_iteratorPtr()
62  {
63  }
64 
65  template <class TmplIterator>
67  {
68  }
69 
70  template <class TmplIterator>
72  {
73  return m_numElements;
74  }
75 
76  template <class TmplIterator>
78  {
79  m_numElements = numElements;
80  }
81 
82  template <class TmplIterator>
84  {
85  return *m_pIStream;
86  }
87 
88  template <class TmplIterator>
89  const std::istream &IterativeReader<TmplIterator>::getIStream() const
90  {
91  return *m_pIStream;
92  }
93 
94  template <class TmplIterator>
96  {
97  return new TmplIterator(*m_pIStream, getNumElements());
98  }
99 
100  template <class TmplIterator>
102  {
103  m_iteratorPtr = IteratorAutoPtr(createNewIterator());
104  }
105 
106  template <class TmplIterator>
108  {
109  return (m_iteratorPtr.get() != NULL);
110  }
111 
112  template <class TmplIterator>
114  {
115  if (!isInitialised())
116  {
117  initialise();
118  }
119  return (*(m_iteratorPtr));
120  }
121  }
122 }
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::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::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::isInitialised
bool isInitialised() const
Definition: IterativeReader.hpp:107
NULL
#define NULL
Definition: t_list.h:17
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::IterativeReader::IterativeReader
IterativeReader(std::istream &iStream)
Definition: IterativeReader.hpp:58