23 #ifndef COM_DAFER45_TBTK_SOURCE_AMPLITUDE_SET 24 #define COM_DAFER45_TBTK_SOURCE_AMPLITUDE_SET 26 #include "TBTK/SerializableVector.h" 70 std::vector<SourceAmplitude>&
get(
82 const std::vector<SourceAmplitude>&
get(
91 template<
bool isConstIterator>
96 typedef typename std::conditional<
100 >::type SourceAmplitudeReferenceType;
106 SourceAmplitudeReferenceType
operator*();
109 bool operator==(
const _Iterator &rhs);
116 typedef typename std::conditional<
119 SerializableVector<SourceAmplitude>
122 SerializableVector<SourceAmplitude>
124 >::type IteratorType;
127 unsigned int currentSourceAmplitude;
130 IteratorType iterator;
133 IteratorType iteratorEnd;
142 typedef typename std::conditional<
145 SerializableVector<SourceAmplitude>
148 SerializableVector<SourceAmplitude>
150 >::type SourceAmplitudeTreeType;
155 SourceAmplitudeTreeType &sourceAmplitudeTree,
166 SerializableVector<SourceAmplitude>
167 > &sourceAmplitudeTree,
169 ) : _Iterator(sourceAmplitudeTree,
end){};
182 SerializableVector<SourceAmplitude>
183 > &sourceAmplitudeTree,
185 ) : _Iterator(sourceAmplitudeTree,
end){};
242 std::vector<SourceAmplitude> &sourceAmplitudes
243 = sourceAmplitudeTree.
get(sourceAmplitude.
getIndex());
244 sourceAmplitudes.push_back(sourceAmplitude);
247 sourceAmplitudeTree.
add(
248 std::vector<SourceAmplitude>(),
251 std::vector<SourceAmplitude> &sourceAmplitudes
252 = sourceAmplitudeTree.
get(sourceAmplitude.
getIndex());
253 sourceAmplitudes.push_back(sourceAmplitude);
260 return sourceAmplitudeTree.
get(index);
266 return sourceAmplitudeTree.
get(index);
270 return sizeof(
this) -
sizeof(sourceAmplitudeTree)
274 template<
bool isConstIterator>
275 SourceAmplitudeSet::_Iterator<isConstIterator>::_Iterator(
276 SourceAmplitudeTreeType &sourceAmplitudeTree,
279 currentSourceAmplitude(0),
281 end ? sourceAmplitudeTree.
end() : sourceAmplitudeTree.
begin()
283 iteratorEnd(sourceAmplitudeTree.
end())
287 template<
bool isConstIterator>
288 void SourceAmplitudeSet::_Iterator<isConstIterator>::operator++(){
289 if(iterator != iteratorEnd){
290 const std::vector<SourceAmplitude> &sourceAmplitudes = *iterator;
291 if(currentSourceAmplitude+1 == sourceAmplitudes.size()){
292 currentSourceAmplitude = 0;
296 currentSourceAmplitude++;
301 template<
bool isConstIterator>
302 typename SourceAmplitudeSet::_Iterator<isConstIterator>::SourceAmplitudeReferenceType
303 SourceAmplitudeSet::_Iterator<isConstIterator>::operator*(){
304 return (*iterator)[currentSourceAmplitude];
307 template<
bool isConstIterator>
308 bool SourceAmplitudeSet::_Iterator<isConstIterator>::operator==(
309 const _Iterator<isConstIterator> &rhs
312 iterator == rhs.iterator
313 && currentSourceAmplitude == rhs.currentSourceAmplitude
322 template<
bool isConstIterator>
323 bool SourceAmplitudeSet::_Iterator<isConstIterator>::operator!=(
324 const _Iterator<isConstIterator> &rhs
327 iterator != rhs.iterator
328 || currentSourceAmplitude != rhs.currentSourceAmplitude
unsigned int getSizeInBytes() const
Definition: IndexedDataTree.h:750
Iterator end()
Definition: IndexedDataTree.h:827
Definition: SourceAmplitudeSet.h:178
std::vector< SourceAmplitude > & get(const Index &index)
Definition: SourceAmplitudeSet.h:257
virtual std::string serialize(Mode mode) const
void add(const Data &data, const Index &index)
Definition: IndexedDataTree.h:355
Definition: Serializable.h:43
Source amplitude for equations with a source term.
Definition: SourceAmplitude.h:40
SourceAmplitudeSet::Iterator end()
Data structure for storing data associated with an index.
bool get(Data &data, const Index &index) const
Definition: IndexedDataTree.h:467
unsigned int getSizeInBytes() const
Definition: SourceAmplitudeSet.h:269
Definition: ElementNotFoundException.h:10
virtual ~SourceAmplitudeSet()
SourceAmplitudeSet::Iterator begin()
Definition: IndexedDataTree.h:45
Definition: SourceAmplitudeSet.h:162
void add(const SourceAmplitude &sourceAmplitude)
Definition: SourceAmplitudeSet.h:238
Source amplitude for equations with a source term.
SourceAmplitudeSet::ConstIterator cend() const
SourceAmplitude container.
Definition: SourceAmplitudeSet.h:40
SourceAmplitudeSet::ConstIterator cbegin() const
Physical index.
Definition: Index.h:44
const Vector2d operator*(double lhs, const Vector2d &rhs)
Definition: Vector2d.h:129
Mode
Definition: Serializable.h:47
const Index & getIndex() const
Definition: SourceAmplitude.h:146
Abstract base class for serializable objects.
bool operator!=(const IndexTree &lhs, const IndexTree &rhs)
Definition: IndexTree.h:391
Iterator begin()
Definition: IndexedDataTree.h:808