%% %% Function-Call Code Generation for the DSP Blockset %% %% dsp_blkparam.tlc - Block parameter functions %% %% Author: D. Orofino %% Copyright (c) 1995-1999 The MathWorks, Inc. All Rights Reserved. %% $Revision: 1.6 $ % $Date: 1999/09/09 18:15:50 $ %% Function: DSPDeclareInlinedBlockParameters ============================= %% Abstract: %% Generate declarations of Inlined block parameters. %% %function DSPDeclareInlinedBlockParameters(block, xArgs) Output %% %with block %foreach i = NumCGFcnArgs-NumCGPortProps %assign arg = CGFcnArgs[i+NumCGPortProps] %assign param = % %if (CGInlineFcn | arg.value) & !FEVAL("dsp_cgargnotused", param, xArgs) %assign decl = "const % % = %;" %assign comment = "\t/* % */" %% %endif %endforeach %endwith %% %endfunction %% DSPDeclareInlinedBlockParameters %function isScalar(setting) void %return (SIZE(setting,0)<=1) | (SIZE(setting,1)<=1) %endfunction %% Function: BlkParamArgListForFcnCall ======================================== %% Abstract: %% Generate function-call argument list containing all %% non-inlined block parameters. %% No leading/trailing commas, one arg per line. %% %function BlkParamArgListForFcnCall(block, xArgs) void %with block %assign argList = "" %foreach idx = NumCGFcnArgs-NumCGPortProps %assign arg = CGFcnArgs[idx+NumCGPortProps] %if !arg.value & !FEVAL("dsp_cgargnotused", arg.param, xArgs) %assign c = WHITE_SPACE(argList) ? "" : ", " %if !isScalar(arg.setting) %warning Block parameter is not a scalar value (setting=%)! %% xxx %assign setStr = "&BlockParam" + STRING(idx) %else %assign setStr = STRING(arg.setting) %endif %assign argList = argList + c + setStr %endif %endforeach %return argList %endwith %endfunction %% BlkParamArgListForFcnCall %% Function: BlkParamArgListForFcnCallProto =================================== %% Abstract: %% Generate function-call prototype containing all %% non-inlined block parameters. %% No leading/trailing commas, one arg per line. %% %function BlkParamArgListForFcnCallProto(block, xArgs) void %with block %assign argList = "" %% Process block property partitions: %% %foreach idx = NumCGFcnArgs-NumCGPortProps %assign arg = CGFcnArgs[idx+NumCGPortProps] %if !arg.value & !FEVAL("dsp_cgargnotused", arg.param, xArgs) %assign c = WHITE_SPACE(argList) ? "" : ",\n" %assign dtStr = "const " + arg.dtype %assign varStr = arg.param %if !isScalar(arg.setting) %% Pass a pointer to a vector of values, not the value itself: %assign dtStr = dtStr + " *" %endif %assign argList = argList + c + " " + dtStr + " " + varStr %endif %endforeach %return argList %endwith %endfunction %% BlkParamArgListForFcnCallProto %% [EOF] dsp_blkparam.tlc