ESyS-Particle  2.3.4
ntb_iter.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 
22 template<typename T>
23 NTBlock_iter<T>::NTBlock_iter(NTBlock<T>* ntb,int ix,int iy,int iz,int ig)
24  : m_block(ntb),
25  m_ix(ix),
26  m_iy(iy),
27  m_iz(iz),
28  m_ig(ig)
29 {
30 }
31 
37 template<typename T>
39 {
40 }
41 
45 template<typename T>
47 {
48  NTBlock_iter<T> t=*this;
49 
50  if(m_ig+1<static_cast<int>(m_block->nparts_at_gridpoint(m_ix,m_iy,m_iz))){
51  m_ig++;
52  } else {
53  m_ig=0;
54  bool found=false;
55  bool end=false;
56  while(!found && !end){
57  if(m_ix<m_block->m_xmax){
58  m_ix++;
59  } else {
60  m_ix=m_block->m_xmin;
61  if(m_iy<m_block->m_ymax){
62  m_iy++;
63  } else {
64  m_iy=m_block->m_ymin;
65  if(m_iz<m_block->m_zmax){
66  m_iz++;
67  } else {
68  m_ix=m_block->m_xmax+1;// end iter
69  m_iy=m_block->m_ymax+1;
70  m_iz=m_block->m_zmax+1;
71  end=true;
72  }
73  }
74  }
75  if(!end) found=m_block->nparts_at_gridpoint(m_ix,m_iy,m_iz)>0;
76  }
77  }
78  return t;
79 }
80 
86 // template<typename T>
87 // NTBlock_iter<T>& NTBlock_iter<T>::operator--()
88 // {}
89 
93 // template<typename T>
94 // NTBlock_iter<T> NTBlock_iter<T>::operator--(int)
95 // {}
96 
102 template<typename T>
104 {
105  return m_block->ptr(m_ix,m_iy,m_iz,m_ig);
106 }
107 
113 template<typename T>
115 {
116  return m_block->ref(m_ix,m_iy,m_iz,m_ig);
117 }
118 
122 template<typename T>
123 bool operator== (const NTBlock_iter<T>& b1,const NTBlock_iter<T>& b2)
124 {
125  return (b1.m_block==b2.m_block &&
126  b1.m_ix==b2.m_ix &&
127  b1.m_iy==b2.m_iy &&
128  b1.m_iz==b2.m_iz &&
129  b1.m_ig==b2.m_ig);
130 }
131 
135 template<typename T>
136 bool operator!= (const NTBlock_iter<T>& b1,const NTBlock_iter<T>& b2)
137 {
138  return (b1.m_block!=b2.m_block ||
139  b1.m_ix!=b2.m_ix ||
140  b1.m_iy!=b2.m_iy ||
141  b1.m_iz!=b2.m_iz ||
142  b1.m_ig!=b2.m_ig);
143 }
operator==
bool operator==(const NTBlock_iter< T > &b1, const NTBlock_iter< T > &b2)
Definition: ntb_iter.hpp:123
NTBlock
representation of a slab of the search array of a NeigborTable
Definition: nt_block.h:33
NTBlock_iter::m_ix
int m_ix
Definition: ntb_iter.h:50
NTBlock_iter::m_iz
int m_iz
Definition: ntb_iter.h:50
NTBlock_iter::m_block
NTBlock< T > * m_block
Definition: ntb_iter.h:49
NTBlock_iter::m_ig
int m_ig
Definition: ntb_iter.h:50
operator!=
bool operator!=(const NTBlock_iter< T > &b1, const NTBlock_iter< T > &b2)
Definition: ntb_iter.hpp:136
NTBlock_iter
iterator for a NTBlock
Definition: ntb_iter.h:39
NTBlock_iter::m_iy
int m_iy
Definition: ntb_iter.h:50
NTBlock_iter::operator->
T * operator->()
access ops
Definition: ntb_iter.hpp:103
NTBlock_iter::operator++
NTBlock_iter & operator++()
move ops
Definition: ntb_iter.hpp:38
NTBlock_iter::operator*
T & operator*()
Definition: ntb_iter.hpp:114
NTBlock_iter::NTBlock_iter
NTBlock_iter(NTBlock< T > *, int, int, int, int)
Definition: ntb_iter.hpp:23