Inline State Functions in Generated Code
Inlined Generated Code for State Functions
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 property Function Inline Option
to explicitly
force or prevent inlining of state functions.
What Happens When You Force Inlining
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.
What Happens When You Prevent Inlining
If you prevent inlining for a state, the code generator produces these static functions for state foo.
Function | Description |
---|---|
| Marks |
| 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. In generated 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 exits
|
Suppose the following chart is in model M
.
If you prevent inlining for state A
, the 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);
How to Set the State Function Inline Option
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.
Value Behavior Inline
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. Function
Prevents inlining of state functions. Generates up to six static functions for the state. See What Happens When You Prevent Inlining. Auto
Uses internal heuristics to determine whether or not to inline the state functions. Click Apply.
Best Practices for Controlling State Function Inlining
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 | Function for the state and each
substate |
Generate a separate function for each action of a state, but include code for the associated action of its substates | Function for the state and
Inline for each substate |