package _VisualDVM.Passes.All; import Common.Utils.Vector_; import _VisualDVM.Global; import _VisualDVM.Visual.Controls.PassControl; import _VisualDVM.Visual.UI; import Common.Utils.Index; import _VisualDVM.GlobalData.Settings.SettingName; import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion; import _VisualDVM.Passes.Sapfor.SapforAnalysis; import java.util.Comparator; import java.util.Vector; public class SPF_GetArrayDistributionOnlyAnalysis extends SapforAnalysis { @Override protected Vector getForbiddenPhases() { return new Vector_<>("SPF_GetArrayDistributionOnlyRegions"); } @Override public String phase() { return "CREATE_DISTR_DIRS"; } @Override protected boolean isAtomic() { return false; } @Override protected void unpack(String packed) throws Exception { String[] splited = packed.split("#"); Index idx = new Index(); int n = Integer.parseInt(splited[idx.Inc()]); for (int i = 0; i < n; ++i) { ParallelRegion p = new ParallelRegion(splited, idx); target.parallelRegions.put(p.regionId, p); } //отсортировать по имени шаблоны target.templates.sort(Comparator.comparing(o -> o.name)); target.GenRules(); } @Override protected void performPreparation() throws Exception { super.performPreparation(); //удаление интеррупта. //как то вывести эти методы в проект. чтобы и при очистке юзать. //иначе анархия. target.parallelRegions.clear(); target.templates.clear(); target.parallelVariants.clear(); } @Override protected void showPreparation() { UI.getVersionsWindow().getVariantsWindow().ShowNoProjectDistribution(); UI.getVersionsWindow().getVariantsWindow().ShowNoVariantsFilter(); UI.getVersionsWindow().getVariantsWindow().ShowNoVariants(); UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowNoRegions(); UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowNoProjectMaxDim(); } @Override protected void showDone() throws Exception { UI.getVersionsWindow().getVariantsWindow().ShowProjectDistribution(); UI.getVersionsWindow().getVariantsWindow().ShowVariantsFilter(); UI.getVersionsWindow().getVariantsWindow().ShowTotalVariantsCount(); UI.getVersionsWindow().getVariantsWindow().ShowFilteredVariantsCount(); UI.getVersionsWindow().getVariantsWindow().ShowCheckedVariantsCount(); UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowRegions(); UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowProjectMaxDim(); super.showDone(); } @Override protected void FocusResult() { UI.getMainWindow().FocusProject(); UI.getMainWindow().getProjectWindow().FocusAnalysis(); } @Override public String getDescription() { return Global.mainModule.getDb().settings.get(SettingName.MPI_PROGRAM).toBoolean()? "Анализ кода (общая память)":"Анализ кода"; } public void RefreshControls(){ for (PassControl control: controls) control.setText(getDescription()); } }