From 5c99578919439680fb6b8db559410dab7fe26fe6 Mon Sep 17 00:00:00 2001
From: Federico Felici <federico.felici@epfl.ch>
Date: Tue, 10 Dec 2019 18:55:49 +0100
Subject: [PATCH] Avoid adding same algoobj to list twice

---
 code/classes/SCDclass_algo.m    |  2 +-
 code/classes/SCDclass_expcode.m | 40 +++++++++++++++++----------------
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/code/classes/SCDclass_algo.m b/code/classes/SCDclass_algo.m
index 3739748..d31df20 100644
--- a/code/classes/SCDclass_algo.m
+++ b/code/classes/SCDclass_algo.m
@@ -245,7 +245,7 @@ classdef SCDclass_algo
        function printinits(obj)
            if(~isempty(obj.stdinits))
                for ii=1:numel(obj.stdinits)
-                   fprintf('%s -> %s in workspace %s \n',char(obj.stdinits{ii}{1}),char(obj.stdinits{ii}{2},obj.stdinits{ii}{3}));
+                   fprintf('%s -> %s in workspace %s \n',char(obj.stdinits{ii}{1}),char(obj.stdinits{ii}{2}{1}),char(obj.stdinits{ii}{3}));
                end
            end
        end
diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m
index 00d9e42..5665cf8 100644
--- a/code/classes/SCDclass_expcode.m
+++ b/code/classes/SCDclass_expcode.m
@@ -399,27 +399,29 @@ classdef SCDclass_expcode
             % Importing inits
             algoinits=algo.getinits;
             if(numel(algoinits)>0)
-                for ii=1:numel(algoinits)
-                    toadd=1;
-                    if(~isempty(obj.stdinits))
-                        for jj=1:numel(obj.stdinits)
-                          for kk=1:numel(obj.stdinits{jj}{2})
-                             if(strcmp(char(obj.stdinits{jj}{2}{kk}),algoinits{ii}{2}))
-                                 warning('SCDclass_expcode:addalgorithm','An init driving the structure %s has already been added, ignoring algorithm object.\d',algoinits{ii}{2})
-                                 toadd=0;
-                             end
-                          end
-                        end
-                    end
-                    if(toadd)
-                        temp=cell(10,1);
-                        temp{1}=algoinits{ii}{1};
-                        temp{2}=algoinits{ii}{2};
-                        obj.stdinits{end+1}=temp;
-                        obj.algoobjlist{end+1}=algo; %% Add the full algorithm object here, to see if it is fine
+              toadd = ones(numel(algoinits),1);
+              for ii=1:numel(algoinits)
+                if(~isempty(obj.stdinits))
+                  for jj=1:numel(obj.stdinits)
+                    for kk=1:numel(obj.stdinits{jj}{2})
+                      if(strcmp(char(obj.stdinits{jj}{2}{kk}),algoinits{ii}{2}))
+                        warning('SCDclass_expcode:addalgorithm','An init driving the structure %s has already been added, ignoring this init.\d',algoinits{ii}{2})
+                        toadd(ii)=0;
+                      end
                     end
+                  end
                 end
-            end            
+                if toadd(ii)
+                  temp=cell(10,1);
+                  temp{1}=algoinits{ii}{1};
+                  temp{2}=algoinits{ii}{2};
+                  obj.stdinits{end+1}=temp;
+                end
+              end
+              if any(toadd) % if any inits from this algoobj were taken
+                obj.algoobjlist{end+1}=algo; %% Add the full algorithm object here, to see if it is fine
+              end
+            end
         end     
             
         function out = getexportedtps(obj)
-- 
GitLab