From 15196ccbddae3f39d91194f14b919707294505da Mon Sep 17 00:00:00 2001 From: Cristian Galperti <cristian.galperti@epfl.ch> Date: Wed, 10 Apr 2019 10:22:16 +0200 Subject: [PATCH] MDS classes parser fixed, f4e example ok ctrl-d matlab MDS+ classes fixed for correctly handling optional parameters, f4e example included, simulink debug passes after expcode setup. --- code/classes/SCDclass_mdspar.m | 53 ++++++++++--------- code/classes/SCDclass_mdspar3Dmatrix.m | 5 +- code/classes/SCDclass_mdsparfixdimvector.m | 7 ++- code/classes/SCDclass_mdsparfixdimvectoridx.m | 7 ++- code/classes/SCDclass_mdsparfixdimvectorint.m | 5 +- code/classes/SCDclass_mdsparmatrix.m | 5 +- code/classes/SCDclass_mdsparscalar.m | 6 ++- code/classes/SCDclass_mdsparscalarint.m | 6 ++- code/classes/SCDclass_mdsparscalartaridx.m | 8 +-- code/classes/SCDclass_mdsparvector.m | 5 +- code/classes/SCDclass_mdswg.m | 40 +++++++------- code/classes/SCDclass_mdswgsigarray1.m | 17 +++--- code/classes/SCDclass_mdswgsigsingle.m | 17 +++--- 13 files changed, 107 insertions(+), 74 deletions(-) diff --git a/code/classes/SCDclass_mdspar.m b/code/classes/SCDclass_mdspar.m index 021e55c..bf736f6 100644 --- a/code/classes/SCDclass_mdspar.m +++ b/code/classes/SCDclass_mdspar.m @@ -19,6 +19,7 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous modelname % name of the Simulink model using the parameter getcommand % full command for getting the value (callable by matlab eval) classname % class name for logging + cparser % constructor parameters parser assignvar % actualizedata specific assignstring % actualizedata specific @@ -33,37 +34,37 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous methods - function obj=SCDclass_mdspar(srctdimodel,destparam,varargin) - % MDS source and model destination constructor - - p=inputParser; - addRequired(p,'srctdimodel',@(x) ischar(x)); - addRequired(p,'destparam',@(x) ischar(x)); - addParameter(p,'srcsrv','tcvdata',@(x) ischar(x)); - addParameter(p,'srctree','tcv_shot',@(x) ischar(x)); - addParameter(p,'srctdishot','',@(x) ischar(x)); - addParameter(p,'modelname','',@(x) ischar(x)); - addParameter(p,'datadictname','',@(x) ischar(x)); - addParameter(p,'modeltpstruct','',@(x) ischar(x)); % desttp ? - - parse(p,srctdimodel,destparam,varargin{:}{:}); + function obj=SCDclass_mdspar() + obj.cparser=inputParser; + addRequired(obj.cparser,'srctdimodel',@(x) ischar(x)); + addRequired(obj.cparser,'destparam',@(x) ischar(x)); + addParameter(obj.cparser,'srcsrv','tcvdata',@(x) ischar(x)); + addParameter(obj.cparser,'srctree','tcv_shot',@(x) ischar(x)); + addParameter(obj.cparser,'srctdishot','',@(x) ischar(x)); + addParameter(obj.cparser,'modelname','',@(x) ischar(x)); + addParameter(obj.cparser,'datadictname','',@(x) ischar(x)); + addParameter(obj.cparser,'modeltpstruct','',@(x) ischar(x)); % desttp ? + + obj.verbose=1; + end + + function obj=parseconstructorcommon(obj, srctdimodel, destparam, varargin) + parse(obj.cparser,srctdimodel,destparam,varargin{:}{:}); - obj.mdsserver=p.Results.srcsrv; - obj.mdstree=p.Results.srctree; - obj.tdiexprmodel=p.Results.srctdimodel; - if isempty(p.Results.srctdishot) - obj.tdiexprshot=p.Results.srctdimodel; + obj.mdsserver=obj.cparser.Results.srcsrv; + obj.mdstree=obj.cparser.Results.srctree; + obj.tdiexprmodel=obj.cparser.Results.srctdimodel; + if isempty(obj.cparser.Results.srctdishot) + obj.tdiexprshot=obj.cparser.Results.srctdimodel; else - obj.tdiexprshot=p.Results.srctdishot; + obj.tdiexprshot=obj.cparser.Results.srctdishot; end - obj.modeltargetpar=p.Results.destparam; - obj.modelname=p.Results.modelname; - obj.datadictionary=p.Results.datadictname; - obj.modeltpstruct=p.Results.modeltpstruct; - obj.verbose=1; + obj.modeltargetpar=obj.cparser.Results.destparam; + obj.modelname=obj.cparser.Results.modelname; + obj.datadictionary=obj.cparser.Results.datadictname; + obj.modeltpstruct=obj.cparser.Results.modeltpstruct; end - end % Not abstract methods common to all child classes diff --git a/code/classes/SCDclass_mdspar3Dmatrix.m b/code/classes/SCDclass_mdspar3Dmatrix.m index 2599175..693520e 100644 --- a/code/classes/SCDclass_mdspar3Dmatrix.m +++ b/code/classes/SCDclass_mdspar3Dmatrix.m @@ -7,7 +7,10 @@ classdef SCDclass_mdspar3Dmatrix < SCDclass_mdspar methods function obj=SCDclass_mdspar3Dmatrix(srctdimodel, destparam, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.classname=mfilename; end diff --git a/code/classes/SCDclass_mdsparfixdimvector.m b/code/classes/SCDclass_mdsparfixdimvector.m index 8960d27..fb98b80 100644 --- a/code/classes/SCDclass_mdsparfixdimvector.m +++ b/code/classes/SCDclass_mdsparfixdimvector.m @@ -10,9 +10,12 @@ classdef SCDclass_mdsparfixdimvector < SCDclass_mdspar methods function obj=SCDclass_mdsparfixdimvector(srctdimodel, destparam, destdimension, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); - obj.classname=mfilename; + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.dimension=destdimension; + obj.classname=mfilename; end function actualizedata(obj, shot) diff --git a/code/classes/SCDclass_mdsparfixdimvectoridx.m b/code/classes/SCDclass_mdsparfixdimvectoridx.m index 7340a85..47479db 100644 --- a/code/classes/SCDclass_mdsparfixdimvectoridx.m +++ b/code/classes/SCDclass_mdsparfixdimvectoridx.m @@ -10,14 +10,17 @@ classdef SCDclass_mdsparfixdimvectoridx < SCDclass_mdspar methods function obj=SCDclass_mdsparfixdimvectoridx(srctdimodel, destparam, srcinterval, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); - obj.classname=mfilename; + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here intervalchecker=@(x) isnumeric(x) && min(diff(x))==1 && max(diff(x))==1; assert(intervalchecker(srcinterval)); obj.idxstart=srcinterval(1); obj.idxstop=srcinterval(end); + obj.classname=mfilename; end function actualizedata(obj, shot) diff --git a/code/classes/SCDclass_mdsparfixdimvectorint.m b/code/classes/SCDclass_mdsparfixdimvectorint.m index 85e685c..9fcc8be 100644 --- a/code/classes/SCDclass_mdsparfixdimvectorint.m +++ b/code/classes/SCDclass_mdsparfixdimvectorint.m @@ -11,7 +11,10 @@ classdef SCDclass_mdsparfixdimvectorint < SCDclass_mdspar methods function obj=SCDclass_mdsparfixdimvectorint(srctdimodel, destparam, destdimension, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.classname=mfilename; obj.dimension=destdimension; end diff --git a/code/classes/SCDclass_mdsparmatrix.m b/code/classes/SCDclass_mdsparmatrix.m index f4dfb24..686ab6e 100644 --- a/code/classes/SCDclass_mdsparmatrix.m +++ b/code/classes/SCDclass_mdsparmatrix.m @@ -7,7 +7,10 @@ classdef SCDclass_mdsparmatrix < SCDclass_mdspar methods function obj=SCDclass_mdsparmatrix(srctdimodel, destparam, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.classname=mfilename; end diff --git a/code/classes/SCDclass_mdsparscalar.m b/code/classes/SCDclass_mdsparscalar.m index ff88044..360d0da 100644 --- a/code/classes/SCDclass_mdsparscalar.m +++ b/code/classes/SCDclass_mdsparscalar.m @@ -7,8 +7,10 @@ classdef SCDclass_mdsparscalar < SCDclass_mdspar methods function obj=SCDclass_mdsparscalar(srctdimodel, destparam, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); - obj.getcommand=sprintf('mdsvalue(''%s'')',obj.tdiexprmodel); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.classname=mfilename; end diff --git a/code/classes/SCDclass_mdsparscalarint.m b/code/classes/SCDclass_mdsparscalarint.m index ea0a158..67c5816 100644 --- a/code/classes/SCDclass_mdsparscalarint.m +++ b/code/classes/SCDclass_mdsparscalarint.m @@ -6,8 +6,10 @@ classdef SCDclass_mdsparscalarint < SCDclass_mdspar methods function obj=SCDclass_mdsparscalarint(srctdimodel, destparam, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); - obj.getcommand=sprintf('mdsvalue(''%s'')',obj.tdiexprmodel); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.classname=mfilename; end diff --git a/code/classes/SCDclass_mdsparscalartaridx.m b/code/classes/SCDclass_mdsparscalartaridx.m index da86280..a6cea86 100644 --- a/code/classes/SCDclass_mdsparscalartaridx.m +++ b/code/classes/SCDclass_mdsparscalartaridx.m @@ -9,7 +9,10 @@ classdef SCDclass_mdsparscalartaridx < SCDclass_mdspar methods function obj=SCDclass_mdsparscalartaridx(srctdimodel, destparam, targetidx, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.targetidx=targetidx; obj.classname=mfilename; end @@ -18,8 +21,7 @@ classdef SCDclass_mdsparscalartaridx < SCDclass_mdspar obj=obj.preactualizecommon(shot); obj.assignstring=sprintf('%s(%d)=%s;',obj.assignvar,obj.targetidx,obj.getcommand); obj.caststring=sprintf('%s=single(%s);',obj.assignvar,obj.assignvar); - obj.postactualizecommon(shot); - + obj.postactualizecommon(shot); end function [obj, value] = getdata(obj, shot) diff --git a/code/classes/SCDclass_mdsparvector.m b/code/classes/SCDclass_mdsparvector.m index bff4965..22673b6 100644 --- a/code/classes/SCDclass_mdsparvector.m +++ b/code/classes/SCDclass_mdsparvector.m @@ -7,7 +7,10 @@ classdef SCDclass_mdsparvector < SCDclass_mdspar methods function obj=SCDclass_mdsparvector(srctdimodel, destparam, varargin) - obj@SCDclass_mdspar(srctdimodel, destparam, varargin); + obj@SCDclass_mdspar(); + % Constructor parser customization definitions here + obj=obj.parseconstructorcommon(srctdimodel, destparam, varargin); + % Constructor parser customization results here obj.classname=mfilename; end diff --git a/code/classes/SCDclass_mdswg.m b/code/classes/SCDclass_mdswg.m index dab0a54..41f313b 100644 --- a/code/classes/SCDclass_mdswg.m +++ b/code/classes/SCDclass_mdswg.m @@ -16,7 +16,8 @@ classdef SCDclass_mdswg < matlab.mixin.Heterogeneous modelname % name of the Simulink model using the parameter getcommand % full command for getting the value (callable by matlab eval) classname % class name for logging - + cparser % constructor parameters parser + timebasestart % timebase start time variable timebasedt % timebase dt variable timebasestop % timebase stop time variable @@ -29,30 +30,29 @@ classdef SCDclass_mdswg < matlab.mixin.Heterogeneous methods %function obj=SCDclass_mdswavegen(srcsrv, srctree, srctdi, modelname, destwavegen, timebasestart, timebasedt, timebasestop) - function obj=SCDclass_mdswg(srctdi, destwavegen, varargin) - % MDS source and model destination constructor - p=inputParser; - addRequired(p,'srctdi',@(x) ischar(x)); - addRequired(p,'destwavegen',@(x) ischar(x)); - addParameter(p,'srcsrv','tcvdata',@(x) ischar(x)); - addParameter(p,'srctree','tcv_shot',@(x) ischar(x)); - addParameter(p,'modelname','',@(x) ischar(x)); - - % From subclasses constructors, unused here - addParameter(p,'destinterval',0); - addParameter(p,'destindex',0); + function obj=SCDclass_mdswg() + obj.cparser=inputParser; + addRequired(obj.cparser,'srctdi',@(x) ischar(x)); + addRequired(obj.cparser,'destwavegen',@(x) ischar(x)); + addParameter(obj.cparser,'srcsrv','tcvdata',@(x) ischar(x)); + addParameter(obj.cparser,'srctree','tcv_shot',@(x) ischar(x)); + addParameter(obj.cparser,'modelname','',@(x) ischar(x)); - parse(p,srctdi,destwavegen,varargin{:}{:}); - - obj.mdsserver=p.Results.srcsrv; - obj.mdstree=p.Results.srctree; - obj.tdiexpr=p.Results.srctdi; - obj.wavegentarget=p.Results.destwavegen; - obj.modelname=p.Results.modelname; obj.verbose=1; obj.wavegenbasestruct=''; end + function obj=parseconstructorcommon(obj, srctdi, destwavegen, varargin) + parse(obj.cparser,srctdi,destwavegen,varargin{:}{:}); + + obj.mdsserver=obj.cparser.Results.srcsrv; + obj.mdstree=obj.cparser.Results.srctree; + obj.tdiexpr=obj.cparser.Results.srctdi; + obj.wavegentarget=obj.cparser.Results.destwavegen; + obj.modelname=obj.cparser.Results.modelname; + + end + end % Not abstract methods common to all child classes diff --git a/code/classes/SCDclass_mdswgsigarray1.m b/code/classes/SCDclass_mdswgsigarray1.m index ca57781..1a05be9 100644 --- a/code/classes/SCDclass_mdswgsigarray1.m +++ b/code/classes/SCDclass_mdswgsigarray1.m @@ -17,22 +17,27 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg %function obj=SCDclass_mdswgsigarray1(srcsrv, srctree, srctdi, modelname, destwavegen, tbstart, tbdt, tbstop, srcstartidx, srcstopidx, deststartidx, deststopidx) function obj=SCDclass_mdswgsigarray1(srctdi, destwavegen, srcinterval, varargin) - obj@SCDclass_mdswg(srctdi, destwavegen, varargin); + obj@SCDclass_mdswg(); intervalchecker=@(x) isnumeric(x) && min(diff(x))==1 && max(diff(x))==1; assert(intervalchecker(srcinterval)); - p=inputParser; - p.addParameter('destinterval',srcinterval,intervalchecker); - parse(p,varargin{:}); - dstinterval=p.Results.destinterval; + obj.cparser.addParameter('destinterval',srcinterval,intervalchecker); + + %p=inputParser; + %p.addParameter('destinterval',srcinterval,intervalchecker); + %parse(p,varargin{:}); + + obj=obj.parseconstructorcommon(srctdi, destwavegen, varargin); + + dstinterval=obj.cparser.Results.destinterval; obj.srcstartidx=srcinterval(1); obj.srcstopidx=srcinterval(end); obj.deststartidx=dstinterval(1); obj.deststopidx=dstinterval(end); - obj.classname='SCDclass_mdswgsigarray1'; + obj.classname=mfilename; end end diff --git a/code/classes/SCDclass_mdswgsigsingle.m b/code/classes/SCDclass_mdswgsigsingle.m index 8fda8fc..fe7ec15 100644 --- a/code/classes/SCDclass_mdswgsigsingle.m +++ b/code/classes/SCDclass_mdswgsigsingle.m @@ -12,16 +12,19 @@ classdef SCDclass_mdswgsigsingle < SCDclass_mdswg methods function obj=SCDclass_mdswgsigsingle(srctdi, destwavegen, varargin) - obj@SCDclass_mdswg(srctdi, destwavegen, varargin); + %obj@SCDclass_mdswg(srctdi, destwavegen, varargin); + obj@SCDclass_mdswg(); destidxvalchecker=@(x) isscalar(x); + %addParameter(obj.cparser,'destindex',1,destidxvalchecker); + obj.cparser.addParameter('destindex',1,destidxvalchecker) + + obj=obj.parseconstructorcommon(srctdi, destwavegen, varargin); + + %parse(p,varargin{:}); + obj.destidx=obj.cparser.Results.destindex; - p=inputParser; - addParameter(p,'destindex',1,destidxvalchecker); - parse(p,varargin{:}); - obj.destidx=p.Results.destindex; - - obj.classname='SCDclass_mdswgsigsingle'; + obj.classname=mfilename; end end -- GitLab