граф процедур в json

This commit is contained in:
2025-04-10 20:56:46 +03:00
parent 829cd0c770
commit 7efe852bc1
10 changed files with 89 additions and 87 deletions

View File

@@ -8,14 +8,16 @@ import _VisualDVM.ProjectData.SapforData.FileObjectWithMessages;
import com.google.gson.annotations.Expose;
import com.sun.org.glassfish.gmbal.Description;
public class FuncCall extends FileObjectWithMessages{
@Description("IGNORE")
private boolean selected = false;
//JSON------------------------------------------
@Expose
public String funcName = ""; //не нужны дополнительные поля.имя функции это уже ключ.
public String funcName = "";
@Expose
public int canBeInlined = 0;
@Expose
public int parentLineOffset = 0;
public int parentLineOffset = 0;// line объявления - line
//END OF JSON------------------------------------
@Description("IGNORE")
private boolean selected = false;
//---
public FuncCall(DBProjectFile father_in, String funcName_in, int line_in) {
super(father_in, line_in);

View File

@@ -1,30 +1,33 @@
package _VisualDVM.ProjectData.SapforData.Functions;
import Common.Utils.Index;
import Common.Utils.Utils_;
import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.SapforData.FileObjectWithMessages;
import _VisualDVM.ProjectData.SapforData.Functions.Json.FunctionParameterJson;
import com.google.gson.annotations.Expose;
import com.mxgraph.model.mxCell;
import javax.swing.*;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Vector;
public class FuncInfo extends FileObjectWithMessages {
//----------------------------------------------------------
@Expose
public int lineEnd;
//JSON--------------------------------------------
@Expose
public String funcName;
@Expose
public FunctionType type;
public int lineEnd; //строка где кончается тело объявления
@Expose
public int isMain; //является ли гпе
@Expose
public int needToInline;
@Expose
public int doNotInline;
@Expose
public int doNotAnalyze;
@Expose
public int needToInline;
@Expose
public FuncParam parameters;
public List<FunctionParameterJson> params = new Vector<>();
//END OF JSON-----------------------------------------
public FunctionType type = FunctionType.Default;
//вызовы функций в теле этой функции
public Vector<FuncCall> calls = new Vector<>();
//вызовы этой самой функции, рассортированные по файлам.
@@ -32,25 +35,6 @@ public class FuncInfo extends FileObjectWithMessages {
//Узел фуннкции при отрисовке графа процедур.
//Нужен для сохранения всех позиций графа.
public mxCell functionsGraphCell = null;
//это конструктор при пофайловой распаковке. в него попадают только объявленные в проекте функции.
public FuncInfo(String f_name, DBProjectFile father_in, String[] splited, Index calls_number) {
super(father_in, Integer.parseInt(splited[0]));
funcName = f_name;
lineEnd = Integer.parseInt(splited[1]);
calls_number.Set(Integer.parseInt(splited[2]));
needToInline = Integer.parseInt(splited[3]);
doNotInline = Integer.parseInt(splited[4]);
doNotAnalyze = Integer.parseInt(splited[5]);
//в си это поле isMain
type = ((Integer.parseInt(splited[6])) != 0) ? FunctionType.Main : FunctionType.Default;
parameters = new FuncParam();
if (splited.length > 6) {
int countP = Integer.parseInt(splited[7]);
parameters.Init(countP);
for (int z = 0; z < countP * 3; z += 3)
parameters.FillParam(z / 3, splited[8 + z + 2], splited[8 + z], Integer.parseInt(splited[8 + z + 1]));
}
}
//функция без объявления. у нее есть только имя и тип.
public FuncInfo(String f_name, FunctionType type_in) {
funcName = f_name;
@@ -62,9 +46,6 @@ public class FuncInfo extends FileObjectWithMessages {
public String getSelectionText() {
return type.getDescription() + " " + Utils_.Brackets(funcName);
}
public boolean isMain() {
return type.equals(FunctionType.Main);
}
//------------------------------------------------
@Override
public boolean isSelectionEnabled() {

View File

@@ -1,9 +0,0 @@
package _VisualDVM.ProjectData.SapforData.Functions.FunctionsJson;
import com.google.gson.annotations.Expose;
import java.util.List;
import java.util.Vector;
public class FunctionsJson {
@Expose
public List<FileFunctionsJson> functions = new Vector<>();
}

View File

@@ -1,4 +1,4 @@
package _VisualDVM.ProjectData.SapforData.Functions.FunctionsJson;
package _VisualDVM.ProjectData.SapforData.Functions.Json;
import _VisualDVM.ProjectData.SapforData.Functions.FuncInfo;
import com.google.gson.annotations.Expose;

View File

@@ -0,0 +1,12 @@
package _VisualDVM.ProjectData.SapforData.Functions.Json;
import com.google.gson.annotations.Expose;
import java.util.List;
public class FunctionParameterJson {
@Expose
public Integer inoutType;
@Expose
public String identificator;
@Expose
public String parameterT;
}

View File

@@ -0,0 +1,10 @@
package _VisualDVM.ProjectData.SapforData.Functions.Json;
import _VisualDVM.ProjectData.SapforData.Loops.Json.FileLoopsJson;
import com.google.gson.annotations.Expose;
import java.util.List;
import java.util.Vector;
public class FunctionsJson {
@Expose
public List<FileFunctionsJson> allFunctions = new Vector<>();
}