By default, the code generator uses an internal heuristic to determine whether to inline generated code for state functions. The heuristic takes into consideration an inlining threshold. As code grows and shrinks in size, generated code for state functions can be unpredictable.
If your model includes Stateflow® objects and you have rigorous
requirements for traceability between generated code and the corresponding
state functions, you can override the default behavior. Use the state
Function Inline Option to explicitly force
or prevent inlining of state functions.
If you force inlining for a state, the code generator inlines code for state actions into the parent function. The parent function contains code for executing the state actions, outer transitions, and flow charts. It does not include code for empty state actions.
If you prevent inlining for a state, the code generator produces these static functions for state foo.
Calls default paths.
Executes flow charts that originate when an inner transition and default transition reach the same junction inside a state.
The code generator produces this function only when the flow chart is complex enough to exceed the inlining threshold.
code, Stateflow software calls this function from both the
Checks for valid outer transitions and if none, performs during actions.
Performs exit actions and marks
Performs exit actions of the child substates and then
Suppose the following chart is in model
If you prevent inlining for state
code generator produces this code.
static void M_inner_default_A(void); static void M_exit_atomic_A(void); static void M_A(void); static void M_enter_atomic_A(void); static void M_enter_internal_A(void);
To set the function inlining property for a state:
Right-click inside the state and, from the context menu, select Properties.
The State properties dialog box opens.
For property Function Inline Option, select one of these values.
|Forces inlining of state functions into the parent function, as long as the function is not part of a recursion. See What Happens When You Force Inlining.|
|Prevents inlining of state functions. Generates up to six static functions for the state. See What Happens When You Prevent Inlining.|
|Uses internal heuristics to determine whether or not to inline the state functions.|
|To||Set Function Inline Option Property To|
|Generate a separate function for each action of a state and a separate function for each action of its substates|
|Generate a separate function for each action of a state, but include code for the associated action of its substates|