www.gusucode.com > private工具箱matlab源码程序 > private/compute_autoinheritance_info.m
function compute_autoinheritance_info % Compute the auto inheritance information and store it in the chart global gMachineInfo for i = 1:length(gMachineInfo.charts) chart = gMachineInfo.charts(i); numSpecs = length(gMachineInfo.specializations{i}); aiInfos = []; % "auto_inheritance_info" for j = 1:numSpecs thisSpec = gMachineInfo.specializations{i}{j}; thisAiInfo = generate_autoinheritance_info(chart, thisSpec); thisAiInfo.spec = thisSpec; aiKey = ['k_' thisAiInfo.checksum]; aiInfos.(aiKey) = thisAiInfo; end sf('set', chart, 'chart.sfunInfo.autoInheritanceInfo', aiInfos); end function ai = generate_autoinheritance_info(chartId, spec) chartData = sf('DataIn',chartId, false); ai.checksum = sf('SyncAutoinheritanceChecksum', chartId, spec); ai.inputs = get_ai_for_scope(chartData, 'INPUT_DATA', chartId); ai.parameters = get_ai_for_scope(chartData, 'PARAMETER_DATA', chartId); ai.outputs = get_ai_for_scope(chartData, 'OUTPUT_DATA', chartId); ai.locals = get_ai_for_scope(chartData, 'LOCAL_DATA', chartId); if sf('feature', 'RegisterExportedChartFunctionsWithSimulink') [ai.postCodegenInfo.exportedFunctionsUsedByThisChart, ai.postCodegenInfo.exportedFunctionsChecksum] = sf('ExportedFunctionsInfo', chartId); end ai.chartUsesVerifyKeyword = logical(sf('get', chartId, '.sfunInfo.chartUsesVerify')); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ai = get_ai_for_scope(dataSet, dataScope, chartId) dataSubset = sf('find',dataSet,'data.scope',dataScope); ai = []; genInfo = true; if(strcmp(dataScope, 'LOCAL_DATA')) genInfo = Stateflow.MALUtils.isMalChart(chartId); end if(genInfo) for i = 1:length(dataSubset) data = dataSubset(i); dataParsedInfo = sf('DataParsedInfo', data); ai(i).size = dataParsedInfo.size; %#ok<AGROW> ai(i).type.base = dataParsedInfo.type.base; %#ok<AGROW> ai(i).type.fixpt = dataParsedInfo.type.fixpt; %#ok<AGROW> ai(i).type.isFixedPointType = dataParsedInfo.type.isFixedPointType; %#ok<AGROW> ai(i).complexity = dataParsedInfo.complexity; %#ok<AGROW> end end