52 Cerr <<
"We pass through Roue_ptr=Roue_ptr" << finl;
98Roue::Roue() : temps_(0), nb_cases_(1), valeurs_(), passe_(this), futur_(this)
107Roue::Roue(
const Roue& roue) : temps_(roue.temps_), nb_cases_(1), valeurs_(roue.valeurs_), passe_(this), futur_(this)
110 for(
int i=1; i<nb_cases_; i++)
124 assert(nb_cases_==1);
125 assert(futur_.ptr==
this);
126 assert(passe_.ptr==
this);
127 assert(valeurs_.size()==0);
128 futur_.ptr=passe_.ptr=0;
139 assert(i<=nb_cases_);
143 return futur_->futur(--i);
155 assert(i<=nb_cases_);
159 return futur_->futur(--i);
171 assert(i<=nb_cases_);
175 return passe_->passe(--i);
187 assert(i<=nb_cases_);
191 return passe_->passe(--i);
207 if (valeurs_.size() != nb_val )
209 valeurs_.resize(nb_val);
210 for(
int j=1; j<nb_cases_; j++)
223 if ((valeurs_.size() != nb_val*nb_comp )||(valeurs_.nb_dim()!=2) || (nb_comp!=valeurs_.dimension(1)))
225 valeurs_.resize(nb_val, nb_comp);
226 for(
int j=1; j<nb_cases_; j++)
239 if(nb_case==nb_cases_)
241 int nb_case_a_ajouter=nb_case-nb_cases_;
242 if(nb_case_a_ajouter>0)
256 for (
int n_to_add = 0; n_to_add < n; n_to_add++)
258 Roue * old_futur = futur_.ptr;
260 this ->futur_.ptr = new_futur;
261 old_futur->passe_.
ptr = new_futur;
262 new_futur->futur_.
ptr = old_futur;
263 new_futur->passe_.
ptr =
this;
266 const int new_nb_cases = nb_cases_ + 1;
267 Roue * ptr_roue =
this;
268 for(
int i = 0; i < new_nb_cases; i++, ptr_roue = ptr_roue->futur_.
ptr)
269 ptr_roue->nb_cases_ = new_nb_cases;
280 for (
int n_to_kill = 0; n_to_kill < n; n_to_kill++)
284 assert(futur_.ptr ==
this);
285 assert(passe_.ptr ==
this);
292 Roue * new_futur = futur_->futur_.ptr;
295 Roue * to_kill = futur_.ptr;
296 to_kill->nb_cases_ = 1;
297 to_kill->futur_.
ptr = to_kill->passe_.
ptr = to_kill;
301 new_futur->passe_.
ptr =
this;
302 futur_.ptr = new_futur;
304 const int new_nb_cases = nb_cases_ - 1;
305 if(new_nb_cases == 1)
310 Roue * ptr_roue =
this;
311 for(
int i = 0; i < new_nb_cases; i++, ptr_roue = ptr_roue->futur_.
ptr)
312 ptr_roue->nb_cases_ = new_nb_cases;
326 temps_ = roue.temps_;
327 valeurs_ = roue.valeurs_;
329 for(
int i=1; i<nb_cases_; i++)
Roue class used in Champ_Inc_Base.
int fixer_nb_cases(int)
Changes the number of slots in the Roue.
Roue & operator=(const Roue &)
Assignment operator for a Roue. Copies the time, values, number of slots, and future slot values.
void ajouter_case(int n=1)
Adds n slots to the Roue.
const Roue & futur(int i=1) const
Returns the Roue corresponding to the i-th future slot.
void dimensionner(int nb_val)
Resizes (1D) the values of the Roue and its future wheels.
void supprimer_case(int n=1)
Removes n slots from the Roue.
Roue()
Default constructor. Builds a wheel with a single slot at time t=0.
const Roue & passe(int i=1) const
Returns the Roue corresponding to the i-th past slot.
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Roue_ptr(const Roue_ptr &)
Copy constructor.
Roue_ptr & operator=(const Roue_ptr &x)
Copy assignment operator.