Documentation

slreportgen.finder.StateflowDiagramElementFinder class

Package: slreportgen.finder
Superclasses:

Find Stateflow diagram elements

Description

StateflowDiagramElementFinder creates a finder object that finds elements in a Stateflow® chart diagram.

Construction

finder = DiagramElementFinder(diagram) creates a finder that finds elements of a Stateflow chart diagram. By default this finder finds states, transitions, truth tables, and other elements in the specified Stateflow chart diagram. Use the properties of the finder to constrain the search to specific types of elements.

Note

This finder has two ways to find objects — find mode and iterator mode. In find mode, use its find method to return the results of a search as an array of results. Then, use a for loop to process the results. In iterator mode, use its hasNext and next methods to return the results of a search one at a time. Using these iterator methods, use a while loop to process the results. Neither of these methods has a performance advantage over the other, so use either mode depending on whether you prefer while or for loops.

finder = DiagramElementFinder(Name,Value) sets properties using name-value pairs. You can specify multiple name-value pair arguments in any order. Enclose each property name in single quotes.

Input Arguments

expand all

See Container property.

Properties

expand all

Chart diagram in which to search, specified as one of these values:

  • Handle to a Stateflow chart block

  • Path to a Stateflow chart block

  • Stateflow chart ID

  • Stateflow chart object

Types of Stateflowdiagram elements to find, specified as a string, character array, array of strings, or a cell array of character arrays. If the type is an array, it specifies a set of element types. The default is All or all, which finds all elements in all diagrams. Use one of these values to constrain the search to specific diagram element types. You can use either the fully qualified name or the short name.

Fully Qualified NameShort Name
Allall
Simulink.Annotationannotation
Simulink.Blockblock
Simulink.Segmentline
Simulink.Portport
Stateflow.Annotationsf_annotation
Stateflow.Boxbox
Stateflow.EMFunctionemfunction
Stateflow.Functionfunction
Stateflow.Junctionjunction
Stateflow.SLFunctionslfunction
Stateflow.Statestate
Stateflow.Transitiontransition
Stateflow.TruthTabletruthtable

Whether to include commented-out chart elements in the search results, specified as a logical. If false, commented-out elements are excluded from the search results.

Properties of objects to find, specified as a cell array of name-value pairs. The finder returns only elements that have the specified properties with the specified values.

Example: finder.Properties = {'ArrowSize','5'}

Methods

results = find(finder) finds Stateflow chart diagram elements in the diagram specified by the finder. This method returns the chart diagram elements it finds wrapped in result objects of type slreportgen.finder.DiagramElementResult. To add tables of the chart diagram element properties, add the results objects directly to the report or add them to a reporter that you then add to a report. The reports to which you can add the results of this method must be reports of type slreportgen.report.Report.

tf = hasNext(finder) determines if the chart diagram that the finder searches contains at least one element. If the chart diagram has at least one element, the hasNext method queues that element as the next element that the next method will return. The hasNext method then returns true. Use the next method to obtain that element. On subsequent calls, the hasNext method determines if the chart diagram has an element that the next method has not yet retrieved. It queues the element for the next method to retrieve and returns true. If there are no more elements to be retrieved, this method returns false. To search a chart diagram progressively for elements, use the hasNext method with the next method in a while loop.

result = next(finder) returns the next search result in the result queue that the hasNext method created. This method returns the chart diagram element that it finds wrapped in a result object of type slreportgen.finder.DiagramElementResult. To add tables of the chart diagram element properties, add the results objects directly to the report or add them to a reporter that you then add to a report. The reports to which you can add the results of this method must be of type slreportgen.report.Report.

Copy Semantics

Handle. To learn how handle classes affect copy operations, see Copying Objects (MATLAB).

Examples

Find Stateflow States and Transitions

Create a report that finds Stateflow states and transitions in the fuelsys model

import slreportgen.report.*
import slreportgen.finder.*
model_name = 'fuelsys';
load_system(model_name);

rpt = slreportgen.report.Report('output','pdf');
add(rpt, TitlePage("Title",sprintf('%s Charts',...
    model_name)));
add(rpt, TableOfContents);

chartFinder = ChartDiagramFinder(model_name);
for while hasNext(chartFinder)
    chart = next(chartFinder);
    chapter = Chapter("Title",chart.Name);
    add(chapter, chart);
    sect = Section("Title","States");
    stateFinder = StateFinder("Container",chart.Object, ...
        "Types", "state");
    states = find(stateFinder,chart.Object);
    for state = states
        add(sect,state);
    end  
    add(chapter,sect);

    sect = Section("Title","Transitions");
    transitionFinder = StateflowDiagramElementFinder("Content",
        chart.Object, "Types", "transition");
    transitions = find(transitionFinder);
    for transition = transitions
        add(sect,transition);
    end  
    add(chapter,sect);
    add(rpt chapter);
end

close(rpt);
close_system(model_name);
rptview(rpt);

Introduced in R2017b

Was this topic helpful?