#include <iterator_stamp.h>
Inheritance diagram for IteratorStamp:


Public Member Functions | |
| RefStamp & | GetFirst () |
| return the first item of a contener | |
| RefStamp & | GetNext () |
| return the next item in the course | |
| IteratorStamp (Contener< RefStamp, Iterator< RefStamp, IteratorStamp > > &c) | |
Private Attributes | |
| RefStamp | atome |
| int | my_n |
| int | my_x |
| int | my_y |
| int | my_z |
Definition at line 59 of file iterator_stamp.h.
| IteratorStamp::IteratorStamp | ( | Contener< RefStamp, Iterator< RefStamp, IteratorStamp > > & | c | ) | [inline] |
Definition at line 65 of file iterator_stamp.h.
References nbrFant.
00065 : 00066 Iterator<RefStamp,IteratorStamp>(c), 00067 my_x(0),my_y(0),my_z(0),my_n(0),atome(nbrFant,nbrFant,nbrFant,0) 00068 {};
| RefStamp & IteratorStamp::GetFirst | ( | ) | [inline] |
return the first item of a contener
Reimplemented from Iterator< RefStamp, IteratorStamp >.
Definition at line 81 of file iterator_stamp.h.
References atome, cellulePerproc, Iterator< RefStamp, IteratorStamp >::end_flag, GetNext(), RefStamp::index_atome, RefStamp::index_boite_x, RefStamp::index_boite_y, RefStamp::index_boite_z, Iterator< RefStamp, IteratorStamp >::my_cont, my_n, my_x, my_y, my_z, nAtom, Contener< T, IT >::nbElem(), and nbrFant.
00081 { 00082 00083 if (!my_cont.nbElem()){ 00084 end_flag = true; 00085 return atome; 00086 } 00087 end_flag = false; 00088 00089 my_x = my_y = my_z = nbrFant; 00090 my_n = 0; 00091 00092 atome.index_boite_x = my_x; 00093 atome.index_boite_y = my_y; 00094 atome.index_boite_z = my_z; 00095 atome.index_atome = my_n; 00096 00097 00098 // si la premiere boite est vide il faut que je prenne le suivant 00099 // tout ca parce que stamp stocke aussi les boites vides 00100 00101 if (cellulePerproc[my_x][my_y][my_z].nAtom == 0){ 00102 GetNext(); 00103 } 00104 00105 return atome; 00106 }
Here is the call graph for this function:

| RefStamp & IteratorStamp::GetNext | ( | ) | [inline] |
return the next item in the course
Reimplemented from Iterator< RefStamp, IteratorStamp >.
Definition at line 112 of file iterator_stamp.h.
References atome, cellulePerproc, DBG_ALL, DUMP, Iterator< RefStamp, IteratorStamp >::end_flag, RefStamp::index_atome, RefStamp::index_boite_x, RefStamp::index_boite_y, RefStamp::index_boite_z, my_n, my_x, my_y, my_z, nAtom, nbCellullePerProc, and nbrFant.
Referenced by GetFirst().
00112 { 00113 00114 int stop_flag=true; 00115 00116 int nbBoiteZ = nbCellullePerProc[2]; 00117 int nbBoiteY = nbCellullePerProc[1]; 00118 int nbBoiteX = nbCellullePerProc[0]; 00119 00120 while(stop_flag) 00121 { 00122 00123 if (my_n < cellulePerproc[my_x][my_y][my_z].nAtom - 1){ 00124 ++my_n; 00125 stop_flag = false; 00126 } 00127 else if (my_z < nbBoiteZ+nbrFant - 1){ 00128 my_n = 0; 00129 ++my_z; 00130 00131 if (cellulePerproc[my_x][my_y][my_z].nAtom != 0) 00132 stop_flag = false; 00133 } 00134 else if (my_y < nbBoiteY+nbrFant - 1){ 00135 my_n = 0; 00136 my_z = nbrFant; 00137 ++my_y; 00138 00139 if (cellulePerproc[my_x][my_y][my_z].nAtom != 0) 00140 stop_flag = false; 00141 } 00142 else if (my_x < nbBoiteX+nbrFant - 1){ 00143 my_n = 0; 00144 my_z = nbrFant; 00145 my_y = nbrFant; 00146 ++my_x; 00147 00148 if (cellulePerproc[my_x][my_y][my_z].nAtom != 0) 00149 stop_flag = false; 00150 } 00151 else { 00152 end_flag = true; 00153 stop_flag = false; 00154 } 00155 00156 if (stop_flag == true) 00157 DUMP("Attention pour information parse une boite vide",DBG_ALL); 00158 } 00159 00160 00161 00162 atome.index_boite_x = my_x; 00163 atome.index_boite_y = my_y; 00164 atome.index_boite_z = my_z; 00165 atome.index_atome = my_n; 00166 00167 return atome; 00168 }
RefStamp IteratorStamp::atome [private] |
int IteratorStamp::my_n [private] |
int IteratorStamp::my_x [private] |
int IteratorStamp::my_y [private] |
int IteratorStamp::my_z [private] |
1.5.2