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>
26
IStreamIterator<TmplData>::~IStreamIterator
()
27
{
28
}
29
30
template
<
class
TmplData>
31
bool
IStreamIterator<TmplData>::hasNext
()
const
32
{
33
return
(m_numRemaining > 0);
34
}
35
36
template
<
class
TmplData>
37
void
IStreamIterator<TmplData>::readDataFromStream
()
38
{
39
m_data.read(*m_pIStream);
40
}
41
42
template
<
class
TmplData>
43
const
TmplData &
IStreamIterator<TmplData>::next
()
44
{
45
m_numRemaining--;
46
readDataFromStream();
47
return
m_data;
48
}
49
50
template
<
class
TmplData>
51
int
IStreamIterator<TmplData>::getNumRemaining
()
const
52
{
53
return
m_numRemaining;
54
}
55
56
//===============================================================================
57
template
<
class
TmplIterator>
58
IterativeReader<TmplIterator>::IterativeReader
(std::istream &iStream)
59
: m_numElements(-1),
60
m_pIStream(&iStream),
61
m_iteratorPtr()
62
{
63
}
64
65
template
<
class
TmplIterator>
66
IterativeReader<TmplIterator>::~IterativeReader
()
67
{
68
}
69
70
template
<
class
TmplIterator>
71
int
IterativeReader<TmplIterator>::getNumElements
()
const
72
{
73
return
m_numElements;
74
}
75
76
template
<
class
TmplIterator>
77
void
IterativeReader<TmplIterator>::setNumElements
(
int
numElements)
78
{
79
m_numElements = numElements;
80
}
81
82
template
<
class
TmplIterator>
83
std::istream &
IterativeReader<TmplIterator>::getIStream
()
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>
95
TmplIterator *
IterativeReader<TmplIterator>::createNewIterator
()
96
{
97
return
new
TmplIterator(*m_pIStream, getNumElements());
98
}
99
100
template
<
class
TmplIterator>
101
void
IterativeReader<TmplIterator>::initialise
()
102
{
103
m_iteratorPtr =
IteratorAutoPtr
(createNewIterator());
104
}
105
106
template
<
class
TmplIterator>
107
bool
IterativeReader<TmplIterator>::isInitialised
()
const
108
{
109
return
(m_iteratorPtr.get() !=
NULL
);
110
}
111
112
template
<
class
TmplIterator>
113
typename
IterativeReader<TmplIterator>::Iterator
&
IterativeReader<TmplIterator>::getIterator
()
114
{
115
if
(!isInitialised())
116
{
117
initialise();
118
}
119
return
(*(m_iteratorPtr));
120
}
121
}
122
}
esys::lsm::IStreamIterator::IStreamIterator
IStreamIterator(std::istream &iStream, int numElements)
Definition:
IterativeReader.hpp:19
esys::lsm::IterativeReader::Iterator
TmplIterator Iterator
Definition:
IterativeReader.h:77
esys
Definition:
CheckPointable.cpp:16
NULL
#define NULL
Definition:
t_list.h:17
esys::lsm::IterativeReader< IStreamIterator< ConnectionData > >::IteratorAutoPtr
std::auto_ptr< Iterator > IteratorAutoPtr
Definition:
IterativeReader.h:103
esys::lsm::IterativeReader
Definition:
IterativeReader.h:74
esys::lsm::IStreamIterator
Definition:
IterativeReader.h:28
Parallel
IterativeReader.hpp
Generated by
1.8.16