2023-11-19 02:12:44 +03:00
|
|
|
package Visual_DVM_2021.Passes.All;
|
2023-09-17 22:13:42 +03:00
|
|
|
import Common.Current;
|
|
|
|
|
import Common.UI.UI;
|
|
|
|
|
import Common.Utils.Utils;
|
|
|
|
|
import ProjectData.Files.DBProjectFile;
|
|
|
|
|
import ProjectData.Files.FileType;
|
|
|
|
|
import ProjectData.Files.LanguageStyle;
|
|
|
|
|
import ProjectData.LanguageName;
|
|
|
|
|
import ProjectData.SapforData.Includes.DependencyInfo;
|
|
|
|
|
import ProjectData.SapforData.Includes.FileInfo;
|
2023-11-19 02:12:44 +03:00
|
|
|
import Visual_DVM_2021.Passes.PassCode_2021;
|
|
|
|
|
import Visual_DVM_2021.Passes.SapforAnalysis;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
import javax.swing.tree.DefaultMutableTreeNode;
|
|
|
|
|
public class SPF_GetIncludeDependencies extends SapforAnalysis {
|
|
|
|
|
boolean update_current = false;
|
|
|
|
|
@Override
|
|
|
|
|
protected PassCode_2021 necessary() {
|
|
|
|
|
return PassCode_2021.SPF_ParseFilesWithOrder;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public String phase() {
|
|
|
|
|
return "BUILD_INCLUDE_DEPENDENCIES";
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void performPreparation() throws Exception {
|
|
|
|
|
super.performPreparation(); //удаление интеррупта.
|
|
|
|
|
target.numAddicted = 0;
|
|
|
|
|
target.addictedFiles.clear();
|
|
|
|
|
target.includes_root.removeAllChildren();
|
|
|
|
|
target.allIncludes.clear();
|
|
|
|
|
for (DBProjectFile file : target.db.files.Data.values())
|
|
|
|
|
file.relativeHeaders.clear();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void unpack(String packed) throws Exception {
|
|
|
|
|
// update_current = false;
|
|
|
|
|
FileInfo fileInfo = null;
|
|
|
|
|
String[] data_ = packed.split("@");
|
|
|
|
|
for (int i = 0; i < data_.length; ++i) {
|
|
|
|
|
String s = Utils.toW(data_[i]);
|
|
|
|
|
if (i % 2 == 0) {
|
|
|
|
|
if (target.db.files.Data.containsKey(s)) {
|
|
|
|
|
fileInfo = new FileInfo(s);
|
|
|
|
|
} else fileInfo = null;
|
|
|
|
|
} else {
|
|
|
|
|
if ((fileInfo != null) && (s != "")) {
|
|
|
|
|
String[] data__ = s.split("\\|");
|
|
|
|
|
for (int j = 0; j < data__.length; ++j) {
|
|
|
|
|
if (data__[j].length() > 0) {
|
|
|
|
|
fileInfo.dependencies.add(
|
|
|
|
|
new DependencyInfo(data__[j]));
|
|
|
|
|
//-------------------------------------
|
|
|
|
|
if (!target.addictedFiles.containsKey(fileInfo.file))
|
|
|
|
|
target.addictedFiles.put(fileInfo.file, fileInfo);
|
|
|
|
|
//-------------------------------------
|
|
|
|
|
String file_name = data__[j];
|
|
|
|
|
if (target.db.files.containsKey(file_name)) {
|
|
|
|
|
DBProjectFile d_file = target.db.files.Data.get(file_name);
|
|
|
|
|
//----------------->>
|
|
|
|
|
if (!target.allIncludes.containsKey(d_file.name))
|
|
|
|
|
target.allIncludes.put(d_file.name, d_file);
|
|
|
|
|
//----------------->>
|
|
|
|
|
DBProjectFile father = target.db.files.Data.get(fileInfo.file);
|
|
|
|
|
father.relativeHeaders.put(Utils.getRelativeName(father.file.getParentFile(), d_file.file), d_file);
|
|
|
|
|
// if (d_file.fileType == FileType.none)
|
|
|
|
|
d_file.UpdateType(FileType.header);
|
|
|
|
|
if (d_file.languageName == LanguageName.n)
|
|
|
|
|
d_file.UpdateLanguage(father.languageName);
|
|
|
|
|
if (d_file.style == LanguageStyle.none)
|
|
|
|
|
d_file.UpdateStyle(father.style);
|
|
|
|
|
//----------------------------------------
|
|
|
|
|
if (Current.HasFile() && Current.getFile().name.equals(d_file.name))
|
|
|
|
|
update_current = true;
|
|
|
|
|
//-----------------------------------------
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fileInfo = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//-теперь строим граф
|
|
|
|
|
for (FileInfo file : target.addictedFiles.values()) {
|
|
|
|
|
DefaultMutableTreeNode node = new DefaultMutableTreeNode(
|
|
|
|
|
file);
|
|
|
|
|
for (DependencyInfo h : file.dependencies) {
|
|
|
|
|
node.add(new DefaultMutableTreeNode(h));
|
|
|
|
|
}
|
|
|
|
|
target.includes_root.add(node);
|
|
|
|
|
}
|
|
|
|
|
target.numAddicted += target.addictedFiles.size();
|
|
|
|
|
target.UpdateAddictedCount();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void showDone() throws Exception {
|
|
|
|
|
UI.getMainWindow().getProjectWindow().ShowIncludes();
|
|
|
|
|
if (update_current)
|
|
|
|
|
Current.getFile().form.ShowProperties();
|
|
|
|
|
super.showDone();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void showPreparation() {
|
|
|
|
|
UI.getMainWindow().getProjectWindow().ShowNoIncludes();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void FocusResult() {
|
|
|
|
|
super.FocusResult();
|
|
|
|
|
UI.getMainWindow().getProjectWindow().FocusDependencies();
|
|
|
|
|
}
|
|
|
|
|
}
|