рефакторинг. подготовка к переводу регионов на json
This commit is contained in:
@@ -6,8 +6,8 @@ import Common.Utils.Pair;
|
||||
import Common.Utils.Utils_;
|
||||
import _VisualDVM.Global;
|
||||
import _VisualDVM.ProjectData.Files.DBProjectFile;
|
||||
import _VisualDVM.ProjectData.SapforData.Arrays.Distribution.AlignRule;
|
||||
import _VisualDVM.ProjectData.SapforData.Arrays.Distribution.DataDirective;
|
||||
import _VisualDVM.ProjectData.SapforData.Arrays.AlignRule;
|
||||
import _VisualDVM.ProjectData.SapforData.Arrays.ArrayLocation;
|
||||
import _VisualDVM.ProjectData.SapforData.Arrays.ProjectArray;
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
@@ -22,21 +22,41 @@ public class ParallelRegion extends DBObject {
|
||||
@Expose
|
||||
public String originalName;
|
||||
@Expose
|
||||
public List<ProjectArray> arrays=new Vector<>();
|
||||
public List<ProjectArray> packed_arrays;
|
||||
@Expose
|
||||
public RegionLinesJson packed_lines;
|
||||
public List<FileRegionLinesJson> regionsLines;
|
||||
@Expose
|
||||
public Vector<AlignRule> alignRules;
|
||||
//----
|
||||
public Vector<String> rules = new Vector<>();
|
||||
public void genRules(LinkedHashMap<BigInteger, ProjectArray> Arrays) {
|
||||
rules.clear();
|
||||
int maxLen = 0;
|
||||
for (AlignRule a : alignRules)
|
||||
maxLen = Math.max(maxLen, a.GetLenString());
|
||||
LinkedHashMap<String, Vector<String>> toPrint = new LinkedHashMap<>();
|
||||
for (AlignRule a : alignRules) {
|
||||
if (Arrays.get(a.alignArray_address).getLocation() != ArrayLocation.parameter) {
|
||||
Pair<String, String> result = a.GenRule(maxLen);
|
||||
if (!toPrint.containsKey(result.getKey()))
|
||||
toPrint.put(result.getKey(), new Vector<>());
|
||||
toPrint.get(result.getKey()).add(result.getValue());
|
||||
}
|
||||
}
|
||||
for (Vector<String> v : toPrint.values())
|
||||
for (String r : v)
|
||||
rules.add(r);
|
||||
}
|
||||
//--
|
||||
public BigInteger regionId;
|
||||
//name in program
|
||||
|
||||
// file -> <start, end> lines
|
||||
public LinkedHashMap<String, List<IntegerPairJson>> lines;
|
||||
public LinkedHashMap<String, List<IntegerPairJson>> lines; //+
|
||||
//ключ - адрес. меняем
|
||||
public LinkedHashMap<BigInteger, ProjectArray> arraysMap;
|
||||
public LinkedHashMap<BigInteger, ProjectArray> arraysMap; //+
|
||||
//for directive creating
|
||||
public DataDirective dataDirectives;
|
||||
public int maxdim = 0;
|
||||
public Vector<String> fragments = new Vector<>();
|
||||
public Vector<String> fragments; //+
|
||||
public int lines_count = 0;
|
||||
public int loops_count = 0;
|
||||
public int arrays_count = 0;
|
||||
@@ -48,7 +68,8 @@ public class ParallelRegion extends DBObject {
|
||||
String[] localSplited = splited[idx.Inc()].split("\\|");
|
||||
int lines_size = Integer.parseInt(localSplited[0]);
|
||||
lines = new LinkedHashMap<>(lines_size);
|
||||
//распаковка Lines -----------------------------------------------
|
||||
fragments = new Vector<>();
|
||||
//распаковка Lines -ArrayALignmentBar-----------
|
||||
//---------------------------------------------------------------
|
||||
for (int i = 0; i < lines_size; ++i) {
|
||||
String line_file = Utils_.toW(localSplited[1]);
|
||||
@@ -79,12 +100,11 @@ public class ParallelRegion extends DBObject {
|
||||
} else if (new_array.isLoopArrayFlag != 1) arrays_count++;
|
||||
}
|
||||
int dataDirectives_alignRules_size = Integer.parseInt(splited[idx.Inc()]);
|
||||
dataDirectives = new DataDirective();
|
||||
dataDirectives.alignRules = new Vector<>(dataDirectives_alignRules_size);
|
||||
alignRules = new Vector<>(dataDirectives_alignRules_size);
|
||||
for (int i = 0; i < dataDirectives_alignRules_size; ++i)
|
||||
dataDirectives.alignRules.add(new AlignRule(splited, idx));
|
||||
for (int i = 0; i < dataDirectives.alignRules.size(); ++i)
|
||||
dataDirectives.alignRules.get(i).parent_region = this;
|
||||
alignRules.add(new AlignRule(splited, idx));
|
||||
for (int i = 0; i < alignRules.size(); ++i)
|
||||
alignRules.get(i).parent_region = this;
|
||||
//--------------------------------------------------------------
|
||||
lines_count = 0;
|
||||
loops_count = 0;
|
||||
@@ -99,7 +119,32 @@ public class ParallelRegion extends DBObject {
|
||||
fd_count += f.FragmentFunctionDeclsCount(L.getKey(), L.getValue());
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------
|
||||
}
|
||||
public void Init() {
|
||||
arraysMap = new LinkedHashMap<>();
|
||||
lines = new LinkedHashMap<>();
|
||||
fragments = new Vector<>();
|
||||
//--
|
||||
if (packed_region_id != null)
|
||||
regionId = new BigInteger(packed_region_id);
|
||||
for (ProjectArray array : packed_arrays) {
|
||||
array.Init();//имена и адреса.
|
||||
arraysMap.put(array.address, array);
|
||||
}
|
||||
//---
|
||||
for (FileRegionLinesJson fr : regionsLines) {
|
||||
lines.put(fr.file, fr.lines);
|
||||
for (IntegerPairJson l : fr.lines) {
|
||||
fragments.add(fr.file + ": " + l.getKey() + "-" + l.getKey());
|
||||
}
|
||||
}
|
||||
//--
|
||||
packed_region_id = null;
|
||||
packed_arrays.clear();
|
||||
packed_arrays = null;
|
||||
regionsLines.clear();
|
||||
regionsLines = null;
|
||||
//--
|
||||
}
|
||||
public boolean ArrayBelongsToRegion(long id) {
|
||||
return arraysMap.values().stream().anyMatch(array -> array.id == id);
|
||||
|
||||
Reference in New Issue
Block a user