ESyS-Particle  2.3
IterativeReader.hpp
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
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 }
int getNumRemaining() const
Definition: IterativeReader.hpp:51
bool hasNext() const
Definition: IterativeReader.hpp:31
virtual void initialise()
Definition: IterativeReader.hpp:101
Definition: CheckPointable.cpp:16
virtual ~IterativeReader()
Definition: IterativeReader.hpp:66
const TmplData & next()
Definition: IterativeReader.hpp:43
std::istream & getIStream()
Definition: IterativeReader.hpp:83
IStreamIterator(std::istream &iStream, int numElements)
Definition: IterativeReader.hpp:19
void setNumElements(int numElements)
Definition: IterativeReader.hpp:77
IterativeReader(std::istream &iStream)
Definition: IterativeReader.hpp:58
#define NULL
Definition: t_list.h:17
Iterator & getIterator()
Definition: IterativeReader.hpp:113
virtual Iterator * createNewIterator()
Definition: IterativeReader.hpp:95
bool isInitialised() const
Definition: IterativeReader.hpp:107
int getNumElements() const
Definition: IterativeReader.hpp:71
TmplIterator Iterator
Definition: IterativeReader.h:77
virtual void readDataFromStream()
Definition: IterativeReader.hpp:37
virtual ~IStreamIterator()
Definition: IterativeReader.hpp:26
std::auto_ptr< Iterator > IteratorAutoPtr
Definition: IterativeReader.h:103