diff --git a/code/classes/SCDclass_algo.m b/code/classes/SCDclass_algo.m index 8a721580ffc6471b285dbd0fa839d80dac164a65..7e24487d008f236ddc0893358348d0c2a779d47f 100644 --- a/code/classes/SCDclass_algo.m +++ b/code/classes/SCDclass_algo.m @@ -474,19 +474,17 @@ classdef SCDclass_algo %% MDS container methods forwarders - function obj = addparameter(obj, param) - % bind parameter(s) to algoobj's name, dictionary and last - % exported tp - + function obj = addparameter(obj, params) % assume this parameter is bound to last exported tp on the list if ~isempty(obj.exportedtps), tpname = obj.exportedtps{end}; else, tpname = ''; end - for ii=1:numel(param) - param(ii) = param(ii).bind(obj.modelname, obj.datadictionary, tpname); - end - obj.mdscontainer=obj.mdscontainer.addparameter(param); + % bind parameter(s) to algoobj's name, dictionary and exportedtp + params = params.bind(obj.modelname, obj.datadictionary, tpname); + + % add params to mdscontainer + obj.mdscontainer=obj.mdscontainer.addparameter(params); end function obj = printparameters(obj) @@ -498,8 +496,10 @@ classdef SCDclass_algo end function obj = addwavegen(obj, wavegen) + for ii=1:numel(wavegen) + wavegen(ii) = wavegen(ii).bind(obj.modelname,obj.datadictionary,obj.timing); + end obj.mdscontainer=obj.mdscontainer.addwavegen(wavegen); - obj.mdscontainer=obj.mdscontainer.bindlastwavegen(obj.modelname, obj.datadictionary, obj.timing); end function obj = printwavegens(obj) diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m index 55baaa028fb68ed2319ec59aeb778470dca7d09c..4a371a3aeb3d0a0744ca59b79273b6d1e93f81f7 100644 --- a/code/classes/SCDclass_expcode.m +++ b/code/classes/SCDclass_expcode.m @@ -379,7 +379,7 @@ classdef SCDclass_expcode for ii=1:numel(obj.exportedtps), fprintf(' ''%s''\n', char(obj.exportedtps{ii})); end end fprintf('* Configured MDS tunparams objects: %d (use printparameters method for details)\n', obj.mdscontainer.getnumparams); - fprintf('* Configured MDS wavegens objects: %d (use printwavegens method for details)\n', obj.mdscontainer.numwavegens); + fprintf('* Configured MDS wavegens objects: %d (use printwavegens method for details)\n', obj.mdscontainer.getnumwavegens); fprintf('* Configured general purpose tasks: %d (use printtasks method for details)\n', obj.taskcontainer.numtasks); fprintf('* Configured init scripts: %d (use printinits method for details)\n', numel(obj.algoobjlist)); end diff --git a/code/classes/SCDclass_mdsobjcontainer.m b/code/classes/SCDclass_mdsobjcontainer.m index 9198a325200b20f63eb6a89e5e51f9f79faeb6ae..904efe46aa2357a71091794a7de1c6dd31a0e804 100644 --- a/code/classes/SCDclass_mdsobjcontainer.m +++ b/code/classes/SCDclass_mdsobjcontainer.m @@ -59,14 +59,6 @@ classdef SCDclass_mdsobjcontainer obj.mdswavegens=[obj.mdswavegens; wavegen]; end - function obj = bindlastwavegen(obj, modelname, datadictionary, timingsrc) - if obj.getnumwavegens>0 - obj.mdswavegens(end)=obj.mdswavegens(end).setmodelname(modelname); - obj.mdswavegens(end)=obj.mdswavegens(end).setdatadictionary(datadictionary); - obj.mdswavegens(end)=obj.mdswavegens(end).settiminginfo(timingsrc); - end - end - function obj = setwavegenbasestruct(obj, basestruct) if obj.getnumwavegens>0 for ii=1:obj.getnumwavegens diff --git a/code/classes/SCDclass_mdspar.m b/code/classes/SCDclass_mdspar.m index 9797b841702333be823bb5947ba9c7d07513f3ab..484bc29136737c6647f61577b30ab2280d008846 100644 --- a/code/classes/SCDclass_mdspar.m +++ b/code/classes/SCDclass_mdspar.m @@ -226,12 +226,6 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous end - function obj = bind(obj,modelname,datadictionary,exportedtp) - obj = obj.setmodelname(modelname); - obj = obj.setdatadictionary(datadictionary); - obj = obj.setparamstructure(exportedtp); - end - function [mdsserver] = getMDSserver(obj) mdsserver = obj.mdsserver; end @@ -278,6 +272,14 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous out = {obj.modelparammarte}'; end end + + function obj = bind(obj,modelname,datadictionary,exportedtp) + for ii=1:numel(obj) + obj(ii) = obj.setmodelname(modelname); + obj(ii) = obj.setdatadictionary(datadictionary); + obj(ii) = obj.setparamstructure(exportedtp); + end + end end methods diff --git a/code/classes/SCDclass_mdswg.m b/code/classes/SCDclass_mdswg.m index 8ed0d10a56d3759e4d5d7d096fa83b4fef9c7b60..6fd2072fef0a450c37772677775beb3a55949685 100644 --- a/code/classes/SCDclass_mdswg.m +++ b/code/classes/SCDclass_mdswg.m @@ -62,6 +62,17 @@ classdef SCDclass_mdswg < matlab.mixin.Heterogeneous end + % Sealed methods for heterogeneous arrays + methods(Sealed) + function obj = bind(obj,modelname,datadictionary,timingsrc) + for ii=1:numel(obj) + obj(ii) = obj(ii).setmodelname(modelname); + obj(ii) = obj(ii).setdatadictionary(datadictionary); + obj(ii) = obj(ii).settiminginfo(timingsrc); + end + end + end + % Not abstract methods common to all child classes methods function mdsconnect(obj, shot) @@ -77,7 +88,7 @@ classdef SCDclass_mdswg < matlab.mixin.Heterogeneous fprintf(' MDS+ source server: ''%s'', Tree: ''%s''\n', obj.mdsserver, obj.mdstree); fprintf(' MDS+ TDI expression: ''%s''\n',obj.tdiexpr); end - + function obj = settiminginfo(obj, timeinfo) obj.timebasestart=timeinfo.t_start; obj.timebasedt=timeinfo.dt;