From 6a2c7197bc7328706c268b1870144b9de9fc5152 Mon Sep 17 00:00:00 2001
From: David Parsons <david.parsons@inria.fr>
Date: Thu, 6 Apr 2023 15:38:04 +0200
Subject: [PATCH] pass ExpSetup to load_legacy

---
 src/libaevol/7/ExpManager_7.cpp    | 13 +++++++------
 src/libaevol/7/ExpManager_7.h      |  3 ++-
 src/libaevol/legacy/ExpManager.cpp |  2 +-
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/libaevol/7/ExpManager_7.cpp b/src/libaevol/7/ExpManager_7.cpp
index 094eb0469..3e6d76a5d 100644
--- a/src/libaevol/7/ExpManager_7.cpp
+++ b/src/libaevol/7/ExpManager_7.cpp
@@ -66,7 +66,8 @@ bool ExpManager_7::standalone_simd = true;
 
 
 
-void ExpManager_7::load_legacy(ExpManager* exp_m, const World* world) {
+void ExpManager_7::load_legacy(ExpManager* exp_m, const ExpSetup* exp_s, const World* world) {
+  assert(exp_s == exp_m->exp_s());
   assert(world == exp_m->world());
   printf("  Loading SIMD Controller...");
 
@@ -98,7 +99,7 @@ void ExpManager_7::load_legacy(ExpManager* exp_m, const World* world) {
   dna_factory_ = new DnaFactory(DnaFactory_Policy::ALLOCATE,exp_m_->nb_indivs()*3,max_size_dna,nb_indivs_);
   #endif
 
-  fuzzy_factory_ = new FuzzyFactory_7(exp_m_->exp_s()->get_fuzzy_flavor(),exp_m_->nb_indivs()*4,
+  fuzzy_factory_ = new FuzzyFactory_7(exp_s->get_fuzzy_flavor(),exp_m_->nb_indivs()*4,
                         world->phenotypic_target_handler()->sampling(),nb_indivs_);
 
   for (int indiv_id = 0; indiv_id < exp_m_->nb_indivs(); indiv_id++) {
@@ -152,12 +153,12 @@ fitness_at_border_[LEFT] = new double[exp_m_->world()->height()+2];
 fitness_at_border_[RIGHT] = new double[exp_m_->world()->height()+2];
 
 
-  global_grid_width_ = exp_m_->exp_s()->global_grid_width();
-  global_grid_height_ = exp_m_->exp_s()->global_grid_height();
+  global_grid_width_ = exp_s->global_grid_width();
+  global_grid_height_ = exp_s->global_grid_height();
 
 
-  rank_x_ = exp_m_->exp_s()->rank_width();
-  rank_y_ = exp_m_->exp_s()->rank_height();
+  rank_x_ = exp_s->rank_width();
+  rank_y_ = exp_s->rank_height();
 
   local_rank_x_ = exp_m_->rank() / rank_y_;
   local_rank_y_ = exp_m_->rank() % rank_y_;
diff --git a/src/libaevol/7/ExpManager_7.h b/src/libaevol/7/ExpManager_7.h
index 2e0a18c98..98e957d98 100644
--- a/src/libaevol/7/ExpManager_7.h
+++ b/src/libaevol/7/ExpManager_7.h
@@ -32,6 +32,7 @@
 #include "Observable.h"
 #include "PhenotypicTargetHandler.h"
 #include "raevol/SIMD_PhenotypicTargetHandler_R.h"
+#include "ExpSetup.h"
 #include "FuzzyFactory_7.h"
 #include "World.h"
 
@@ -102,7 +103,7 @@ class ExpManager_7 : public Observable{
   ExpManager_7() =  default;
   ~ExpManager_7();
 
-  void load_legacy(ExpManager* exp_m, const World* world);
+  void load_legacy(ExpManager* exp_m, const ExpSetup* exp_s, const World* world);
   void setup_individuals(double w_max, double selection_pressure);
   void run_a_step(double w_max, double selection_pressure);
 
diff --git a/src/libaevol/legacy/ExpManager.cpp b/src/libaevol/legacy/ExpManager.cpp
index 394ff64e9..48a4a63c3 100644
--- a/src/libaevol/legacy/ExpManager.cpp
+++ b/src/libaevol/legacy/ExpManager.cpp
@@ -642,7 +642,7 @@ void ExpManager::load(gzFile& exp_s_file,
     if (ExpManager_7::standalone_simd) {
       // if (to_be_run) {
         exp_m_7_ = new ExpManager_7;
-        exp_m_7_->load_legacy(this, this->world_);
+        exp_m_7_->load_legacy(this, this->exp_s_, this->world_);
         exp_m_7_->protein_grain_size = grain_size;
         exp_m_7_->rna_grain_size     = grain_size;
       // }
-- 
GitLab