%if EXISTS("_BLKIO_API_") == 0
%assign _BLKIO_API_ = 1
%%
%%Copyright2018-2019TheMathWorks,Inc.
%%
 
%include "blkio_internalapi.tlc"
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalNumDimensions
%%Abstract:
%%Returnsthenumberofdimensionsofthespecifiedblockinputport.
%%
%function LibBlockInputSignalNumDimensions(portIdx) void
  %% See Also:
  %% LibBlockInputSignalDimensions
  %%
  %<LibGetInputPortRecordIsValid(portIdx)>
  %return CGMODEL_ACCESS("Block.InputSignalNumDimensions", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockInputSignalNumDimensions
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalWidth===============
%%Abstract:
%%Returnsthewidthofthespecifiedblockinputportindex.
%%
%function LibBlockInputSignalWidth(portIdx) void
  %% See Also:
  %% LibBlockOutputSignalWidth
  %%
  %return CGMODEL_ACCESS("Block.InputSignalWidth", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockInputSignalWidth
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalDimensions==========
%%Abstract:
%%Returnsthedimensionsvectorofspecifiedblockinputport,e.g.[2,3]
%%
%function LibBlockInputSignalDimensions(portIdx) void
  %% See Also:
  %% LibBlockInputSignalNumDimensions
  %%
  %return CGMODEL_ACCESS("Block.InputSignalDimensions", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockInputSignalDimensions
 
%%Function:LibCGTypeNumDimensions============================================
%%Abstract:
%%Returnnumberofdimensions
%%
%function LibCGTypeNumDimensions(idx) void
  %return CGMODEL_ACCESS("CGType.GetNumDimensions", idx)
%endfunction
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalIsComplex
%%Abstract:
%%Returns1ifthespecifiedblockinputportiscomplex,0otherwise.
%%
%function LibBlockInputSignalIsComplex(portIdx) void
  %<LibGetInputPortRecordIsValid(portIdx)>
  %return CGMODEL_ACCESS("Block.InputSignalIsComplex", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockInputSignalIsComplex
 
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalDataTypeId
%%Abstract:
%%Returnsthenumericidentifier(id)correspondingtothedatatypeofthe
%%specifiedblockinputport.
%%
%%Iftheinputportsignaliscomplex,thisfunctionreturnsthedatatype
%%oftherealpart(ortheimaginarypart)ofthesignal.
%%
%function LibBlockInputSignalDataTypeId(portIdx) void
  %<LibGetInputPortRecordIsValid(portIdx)>
  %return CGMODEL_ACCESS("Block.InputSignalDataTypeId", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockInputSignalDataTypeId
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalAllowScalarExpandedExpr
%%Abstract:
%%Alwaysallowtheinputsignaltobeanexpression,evenwhenanyofthe
%%outputsignalsarewide.TobecalledinBlockInstanceSetupfunction.
%%
%function LibBlockInputSignalAllowScalarExpandedExpr(block,ipIdx) void
  %    block.BlockIdx[0], block.BlockIdx[2], ipIdx, 1)>
%endfunction
 
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalIsFrameData
%%Abstract:
%%Returns1ifthespecifiedblockinputportisframebased,0otherwise.
%%
%function LibBlockInputSignalIsFrameData(portIdx) void
  %<LibGetInputPortRecordIsValid(portIdx)>
  %return CGMODEL_ACCESS("Block.InputSignalIsFrameData", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockInputSignalIsFrameData
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalIsFrameData
%%Abstract:
%%Returns1ifthespecifiedblockoutputportisframebased,0otherwise.
%%
%function LibBlockOutputSignalIsFrameData(portIdx) void
  %return CGMODEL_ACCESS("Block.OutputSignalIsFrameData", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockOutputSignalIsFrameData
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalIsExpr
%%Abstract:
%%Returns1(true)iftheinputsignalisanexpression(versusavariable),
%%and0(false)otherwise.
%%
%function LibBlockInputSignalIsExpr(portIdx) void
  %if ::CompiledModel.GeneratingOutputsCode
    %return CGMODEL_ACCESS("Block.InputSignalIsExpr", BlockIdx[0], BlockIdx[2], portIdx)
  %else
    %return TLC_FALSE
  %endif
%endfunction
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalIsTrivialExpr
%%Abstract:
%%Returns1(true)iftheinputsignalisatrivialexpression(versusa
%%variable),and0(false)otherwise.
%%
%function LibBlockInputSignalIsTrivialExpr(portIdx) void
  %if ::CompiledModel.GeneratingOutputsCode
    %return CGMODEL_ACCESS("Block.InputSignalIsTrivialExpr", BlockIdx[0], BlockIdx[2], portIdx)
  %else
    %return TLC_FALSE
  %endif
%endfunction
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalIsTrivialExpr
%%Abstract:
%%Returns1(true)iftheoutputsignalisatrivialexpression,and0
%%(false)otherwise.
%%
%function LibBlockOutputSignalIsTrivialExpr(portIdx) void
  %if ::CompiledModel.GeneratingOutputsCode
    %return CGMODEL_ACCESS("Block.OutputSignalIsTrivialExpr", BlockIdx[0], BlockIdx[2], portIdx)
  %else
    %return 0
  %endif
%endfunction
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalIsConstExpr
%%Abstract:
%%Returns1(true)iftheoutputsignalisaconstexpression,and0
%%(false)otherwise.Notethatconstexpressionsarealwaysconst,
%%whethercalledinablockOutputsfunctionornot.
%%
%function LibBlockOutputSignalIsConstExpr(portIdx) void
  %return CGMODEL_ACCESS("Block.OutputSignalIsConstExpr", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalIsNonConstExpr
%%Abstract:
%%Returns1(true)iftheoutputsignalisanexpression,and0(false)
%%otherwise.
%%
%function LibBlockOutputSignalIsNonConstExpr(portIdx) void
  %if ::CompiledModel.GeneratingOutputsCode
    %return LibBlockOutputSignalIsExprInOutputs(portIdx) && ...
      ! LibBlockOutputSignalIsConstExpr(portIdx)
  %else
    %return 0
  %endif
%endfunction
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalIsExpr
%%Abstract:
%%Returns1(true)iftheoutputsignalisanexpression,and0(false)
%%otherwise.
%%
%function LibBlockOutputSignalIsExpr(portIdx) void
  %if ::CompiledModel.GeneratingOutputsCode
    %if NumDataOutputPorts < 1
        %assign warningString = "LibBlockOutputSignalIsExpr should only be called on a block with 1 or more output ports"
        %<LibReportWarning(warningString)>
        %return 0
    %else
        %return LibBlockOutputSignalIsExprInOutputs(portIdx)
    %endif
  %else
    %return 0
  %endif
%endfunction
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalIsExprInOutputs
%%Abstract:
%%Returns1(true)iftheoutputsignalisanexpressionintheoutputs
%%function,and0(false)otherwise.Thisfunctionisusedasalowlevel
%%utilitytogetaccesstowhatthevaluewillbewhengeneratingthe
%%block'soutputscode.ShouldbeusedinBlockInstanceSetupfunction.
%%
%function LibBlockOutputSignalIsExprInOutputs(portIdx) void
  %return CGMODEL_ACCESS("Block.OutputSignalIsExpr", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction
 
%%DocFunction{InputSignalFunctions}:LibBlockInputSignalConnected===========
%%Abstract:
%%Returns1ifthespecifiedinputportisconnectedtoablockotherthan
%%theGroundblockand0otherwise.
%%
%%
%function LibBlockInputSignalConnected(portIdx) void
  %return CGMODEL_ACCESS("Block.InputSignalConnected", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction
 
%%DocFunction{OutputSignalFunctions}:LibBlockOutputSignalConnected=========
%%Abstract:
%%Returns1ifthespecifiedoutputportisconnectedtoablockotherthan
%%theTerminatorblockand0otherwise.
%%
%function LibBlockOutputSignalConnected(portIdx) void
  %return CGMODEL_ACCESS("Block.OutputSignalConnected", BlockIdx[0], BlockIdx[2], portIdx)
%endfunction %% LibBlockOutputSignalConnected
 
%endif %% _BLKIO_API_