Ada S-functions
    creating
    example
    GNAT Ada95 compiler
    mex syntax
    source file format
    specification
additional parameters for M-file S-functions
array bounds
    checking

block I/O ports
block-based sample times
    specifying
Build Info pane
    S-Function Builder

C language header file
    matlabroot/simulink/include/simstruc.h
C MEX S-functions
    advantages
    converting from level 1 to level 2
    creating
    definition
    example
    modes for compiling
    S-Function Builder
    Simulink interaction
C++ objects
    making persistent
C++ S-functions
    building
    mex command
callback methods
CFortran
cg_sfun.h
checking array bounds
compiler compatibility
    Fortran
continuous blocks
    setting sample time
Continuous Derivatives pane
    S-Function Builder
continuous state S-function example (C MEX)
continuous state S-function example (M-file)
creating persistent C++ objects
C-to-Fortran gateway S-function

data types
    using user-defined
direct feedthrough
direct index lookup table example
direct-index lookup table algorithm
discrete state S-function example (C MEX)
discrete state S-function example (M-file)
Discrete Update pane
    S-Function Builder
dynamically sized inputs

error handling
    checking array bounds
    exception free code
examples
    Ada S-function specification
    C MEX S-function
    continuous state S-function (C MEX)
    continuous state S-function (M-file)
    direct index lookup table
    discrete state S-function (C MEX)
    discrete state S-function (M-file)
    Fortran MEX S-function
    hybrid system S-function (C MEX)
    hybrid system S-function (M-file)
    multiport S-function
    pointer work vector
    sample time for continuous block
    sample time for hybrid block
    time-varying continuous transfer function (C MEX)
    variable-step S-function (C MEX)
    variable-step S-function (M-file)
    zero-crossing S-function (C MEX)
exception free code
extern "C" statement

Fortran compilers
Fortran math library
Fortran MEX S-functions
    example
    template file
function-call subsystems

header files
hybrid blocks
    setting sample time
hybrid sample times
    specifying
hybrid system S-function example (C MEX)
hybrid system S-function example (M-file)

Initialization pane
    S-Function Builder
inlined S-functions
    with mdlRTW routine
input arguments for M-file S-functions
input ports
    how to create
inputs, dynamically sized

Level 1 C MEX S-functions
    converting to level 2
Libraries pane
    S-Function Builder

masked multiport S-functions
matlabroot/simulink/include/simstruc.h C language header file
matlabroot/simulink/src/csfunc.c example file
matlabroot/simulink/src/dsfunc.c example file
matlabroot/simulink/src/mixedm.c example file
matlabroot/simulink/src/sfun_counter_cpp.cpp
    ensuring Simulink compatibility of C++ S-functions
matlabroot/simulink/src/sfun_multiport.c example file
matlabroot/simulink/src/sfun_timestwo_for.for Fortran example file
matlabroot/simulink/src/sfun_zc_sat.c example file
matlabroot/simulink/src/stvctf.c example file
matlabroot/simulink/src/vsfunc.c example file
matlabroot/toolbox/simulink/blocks/tlc_c/sfun_multiport.tlc example file
matrix.h
mdlCheckParameters
mdlDerivatives
mdlGetTimeOfNextVarHit
mdlInitializeConditions
mdlInitializeSampleTimes
mdlInitializeSizes
    and sizes structure
    calling sizes
mdlOutputs
mdlProcessParameters
mdlRTW
mdlRTW routine
    writing inlined S-functions
mdlSetDefaultPortComplexSignals
mdlSetDefaultPortDataTypes
mdlSetDefaultPortDimensionInfo
mdlSetInputPortComplexSignal
mdlSetInputPortDataType
mdlSetInputPortDimensionInfo
mdlSetInputPortFrameData
mdlSetInputPortSampleTime
mdlSetInputPortWidth
mdlSetOutputPortComplexSignal
mdlSetOutputPortDataType
mdlSetOutputPortDimensionInfo
mdlSetOutputPortSampleTime
mdlSetOutputPortWidth
mdlSetWorkWidths
mdlStart
mdlTerminate
mdlUpdate
mdlZeroCrossings
memory allocation
memory and work vectors
mex command
    building Ada S-functions
    building C MEX S-functions
    building C++ S-functions
MEX S-function wrapper
    definition
mex.h
M-file S-functions
    arguments
    creating
    defining characteristics
    definition
    passing additional parameters
    routines
multiport S-function example
multirate S-Function blocks
    synchronizing

noninlined S-functions

obsolete macros
options, S-function
output ports
    how to create
Outputs pane
    S-Function Builder

parameters
    M-file S-functions
    passing to S-functions
    run-time parameters
    tunable parameters
penddemo demo
persistence
    C++ objects
port-based sample times
    constant
    inherited
    specifying
    triggered

reentrancy
RTWdata structure
    inlining an S-function
run-time parameter names, uniqueness of
run-time parameters
run-time routines

S_FUNCTION_LEVEL 2, #define
S_FUNCTION_NAME, #define
sample times
    block-based
    continuous block example
    hybrid block example
    port-based
    specifying block-based <1> <2>
    specifying hybrid
    specifying port-based
scalar expansion of inputs
S-Function blocks
    multirate
    S-functions parameters field
    synchronizing multirate
S-Function Builder
    Build Info pane
    Continuous Derivatives pane
    customizing
    Discrete Update pane
    for C MEX S-functions
    Initialization pane
    Libraries pane
    Outputs pane
    setting the include path
S-function routines
    M-file
<$nopageS-functions
    <it M-file S-functions
S-functions
    building C++
    C MEX
    creating Ada
    creating C MEX
    creating Fortran
    creating level 2 with Fortran
    creating persistent C++ objects
    creating run-time parameters
    definition
    direct feedthrough
    exception free code
    fully inlined with mdlRTW routine
    inlined
    input arguments for M-files
    level 1 and level 2
    masked multiport
    noninlined
    options
    purpose
    routines
    run-time parameters
    run-time routines
    that work with Real-Time Workshop
    types of
    using in models
    when to use
    wrapper
    writing in C++
    See also Ada S-functions
    See also C MEX S-functions
    See also C++ S-functions
    See also Fortran MEX S-functions
S-functions parameters field
    S-Function block
sfuntmpl.c template
sfuntmpl.m template
    M-file S-function
sfuntmpl_fortran.for template
simsizes function
    M-file S-function
SimStruct
SimStruct macros
simulation loop
simulation stages
simulink.c
sizes structure
    fields
        M-file S-function
    returned in mdlInitializeSizes
SS_OPTION_ALLOW_INPUT_SCALAR_EXPANSION
SS_OPTION_ALLOW_PARTIAL_DIMENSIONS_CALL
SS_OPTION_ASYNC_RATE_TRANSITION
SS_OPTION_ASYNCHRONOUS
SS_OPTION_CALL_TERMINATE_ON_EXIT
SS_OPTION_DISALLOW_CONSTANT_SAMPLE_TIME
SS_OPTION_DISCRETE_VALUED_OUTPUT
SS_OPTION_EXCEPTION_FREE_CODE
SS_OPTION_FORCE_NONINLINED_FCNCALL
SS_OPTION_PLACE_ASAP
SS_OPTION_RUNTIME_EXCEPTION_FREE_CODE
SS_OPTION_SIM_VIEWING_DEVICE
SS_OPTION_USE_TLC_WITH_ACCELERATOR
ssCallExternalModeFcn
ssCallSystemWithTid <1> <2>
ssGetAbsTol
ssGetBlockReduction
ssGetContStateAddress
ssGetContStates
ssGetDataTypeId
ssGetDataTypeName
ssGetDataTypeSize
ssGetDataTypeZero
ssGetDiscStates
ssGetDTypeIdFromMxArray
ssGetDWork
ssGetDWorkComplexSignal
ssGetDWorkDataType
ssGetDWorkName <1> <2> <3> <4> <5> <6>
ssGetDWorkRTWTypeQualifier
ssGetDWorkUsedAsDState
ssGetDWorkWidth
ssGetdX
ssGetErrorStatus
ssGetInlineParameters
ssGetInputPortBufferDstPort
ssGetInputPortComplexSignal
ssGetInputPortConnected
ssGetInputPortDataType
ssGetInputPortDimensions
ssGetInputPortDirectFeedThrough
ssGetInputPortFrameData
ssGetInputPortNumDimensions
ssGetInputPortOffsetTime
ssGetInputPortOverWritable
ssGetInputPortRealSignal
ssGetInputPortRealSignalPtrs
ssGetInputPortRequiredContiguous
ssGetInputPortReusable
ssGetInputPortSampleTime
ssGetInputPortSampleTimeIndex
ssGetInputPortSignal
ssGetInputPortSignalAddress
ssGetInputPortSignalPtrs
ssGetInputPortWidth
ssGetIWork
ssGetModelName
ssGetModeVector
ssGetModeVectorValue <1> <2>
ssGetNonsampledZCs
ssGetNumContStates
ssGetNumDataTypes
ssGetNumDiscStates
ssGetNumDWork
ssGetNumInputPorts
ssGetNumIWork
ssGetNumModes
ssGetNumNonsampledZCs
ssGetNumOutputPorts
ssGetNumParameters
ssGetNumPWork
ssGetNumRunTimeParams
ssGetNumRWork
ssGetNumSampleTimes
ssGetNumSFcnParams
ssGetOutputPortBeingMerged
ssGetOutputPortComplexSignal
ssGetOutputPortDataType
ssGetOutputPortDimensions
ssGetOutputPortFrameData
ssGetOutputPortNumDimensions
ssGetOutputPortOffsetTime
ssGetOutputPortRealSignal
ssGetOutputPortReusable
ssGetOutputPortSampleTime
ssGetOutputPortSignal
ssGetOutputPortSignalAddress
ssGetOutputPortWidth
ssGetParentSS
ssGetPath
ssGetPlacementGroup
ssGetPWork
ssGetRealDiscStates
ssGetRootSS
ssGetRunTimeParamInfo
ssGetRWork <1> <2> <3> <4> <5> <6> <7>
ssGetSampleTimeOffset
ssGetSampleTimePeriod
ssGetSFcnParam
ssGetSFcnParamsCount
ssGetSimMode
ssGetSolverMode
ssGetSolverName
ssGetStateAbsTol
ssGetStopRequested
ssGetT
ssGetTaskTime
ssGetTFinal
ssGetTNext
ssGetTStart
ssGetUserData
ssIsContinuousTask
ssIsFirstInitCond
ssIsMajorTimeStep
ssIsMinorTimeStep
ssIsSampleHit
ssIsSpecialSampleHit
ssIsVariableStepSolver
ssParamRec structure
    returned by ssGetRunTimeParamInfo
ssPrintf
ssRegAllTunableParamsAsRunTimeParams
ssRegisterDataType
ssSampleTimeAndOffsetAreTriggered <1> <2>
ssSetBlockReduction
ssSetCallSystemOutput
ssSetDataTypeSize
ssSetDataTypeZero
ssSetDWorkComplexSignal
ssSetDWorkDataType
ssSetDWorkName
ssSetDWorkUsedAsDState
ssSetDWorkWidth
ssSetErrorStatus
ssSetExternalModeFcn
ssSetInputPortComplexSignal
ssSetInputPortDataType
ssSetInputPortDirectFeedThrough
ssSetInputPortFrameData
ssSetInputPortMatrixDimensions
ssSetInputPortOffsetTime
ssSetInputPortOverWritable
ssSetInputPortRequiredContiguous
ssSetInputPortReusable
ssSetInputPortSampleTime
ssSetInputPortSampleTimeIndex
ssSetInputPortVectorDimension
ssSetInputPortWidth
ssSetModeVectorValue
ssSetNumContStates
ssSetNumDiscStates
ssSetNumDWork
ssSetNumInputPorts
ssSetNumIWork
ssSetNumModes
ssSetNumNonsampledZCs
ssSetNumOutputPorts
ssSetNumPWork
ssSetNumRunTimeParams
ssSetNumRWork
ssSetNumSampleTimes
ssSetNumSFcnParams
ssSetOffsetTime
ssSetOptions
ssSetOutputPortComplexSignal
ssSetOutputPortDataType
ssSetOutputPortFrameData
ssSetOutputPortMatrixDimensions
ssSetOutputPortOffsetTime
ssSetOutputPortReusable
ssSetOutputPortSampleTime
ssSetOutputPortVectorDimension
ssSetOutputPortWidth
ssSetParameterName
ssSetParameterTunable
ssSetPlacementGroup
ssSetRunTimeParamInfo
ssSetSampleTime
ssSetSFcnParamNotTunable
ssSetSFcnParamTunable
ssSetSolverNeedsReset
ssSetStopRequested
ssSetTNext
ssSetUserData
ssSetVectorMode
ssUpdateAllTunableParamsAsRunTimeParams
ssUpdateRunTimeParamData
ssUpdateRunTimeParamInfo
ssWarning
ssWriteRTW2dMatParam
ssWriteRTWMx2dMatParam
ssWriteRTWMxVectParam
ssWriteRTWParameters
ssWriteRTWParamSettings
ssWriteRTWScalarParam
ssWriteRTWStr
ssWriteRTWStrParam
ssWriteRTWStrVectParam
ssWriteRTWVectParam
ssWriteRTWWorkVect
synchronizing multirate S-Function blocks

templates
    M-file S-function
time-varying continuous transfer function example (C MEX)
tmwtypes.h
tunable parameters

variable-step S-function example (C MEX)
variable-step S-function example (M-file)

work vectors
wrapper S-functions
writing S-functions in Ada
writing S-functions in C++
writing S-functions in MATLAB

zero-crossing S-function example (C MEX)