diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java index e554d1290..dab549a78 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java @@ -1375,7 +1375,7 @@ public class AVM2Code implements Serializable { list.remove(lastPos); } - s = Graph.graphToString(list, hilighted, constants, localRegNames, fullyQualifiedNames); + s = Graph.graphToString(list, hilighted, true, constants, localRegNames, fullyQualifiedNames); return s; } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java index 21b7011d5..a380c4bf4 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java @@ -43,6 +43,12 @@ public class NewObjectAVM2Item extends AVM2Item { if (pairs.size() < 2) { return hilight("{", highlight) + params + hilight("}", highlight); } - return "\r\n" + Graph.INDENTOPEN + "\r\n" + hilight("{", highlight) + "\r\n" + params + "\r\n" + hilight("}", highlight) + "\r\n" + Graph.INDENTCLOSE + "\r\n"; + String ret = "\r\n" + Graph.INDENTOPEN + "\r\n"; + ret += hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; + ret += params + "\r\n"; + ret += Graph.INDENTCLOSE + "\r\n"; + ret += hilight("}", highlight) + "\r\n" + Graph.INDENTCLOSE + "\r\n"; + return ret; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java index 9073b3041..a6fb064f3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphTargetItem; import java.util.ArrayList; import java.util.HashMap; @@ -44,10 +45,12 @@ public class WithAVM2Item extends AVM2Item { public String toString(boolean highlight, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { String ret; ret = hilight("with(", highlight) + scope.toString(highlight, constants, localRegNames, fullyQualifiedNames) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; /*for (GraphTargetItem ti : items) { ret += ti.toString(constants, localRegNames, fullyQualifiedNames) + "\r\n"; - } - ret += hilight("}", highlight);*/ + }*/ + ret += Graph.INDENTCLOSE + "\r\n"; + ret += hilight("}", highlight); return ret; } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java index e0b8f5201..d160a5ad6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -71,11 +72,13 @@ public class ForEachInAVM2Item extends LoopItem implements Block { String ret = ""; ret += hilight("loop" + loop.id + ":", highlight) + "\r\n"; ret += hilight("for each (", highlight) + expression.toString(highlight, localData) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += hilight(":loop" + loop.id, highlight); return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java index 29efd70b2..78fd3f0df 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -71,11 +72,13 @@ public class ForInAVM2Item extends LoopItem implements Block { String ret = ""; ret += hilight("loop" + loop.id + ":", highlight) + "\r\n"; ret += hilight("for (", highlight) + expression.toString(highlight, localData) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += hilight(":loop" + loop.id, highlight); return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java index 724eaacee..09bcf34a8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.types.ABCException; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.model.ContinueItem; import com.jpexs.helpers.Helper; @@ -55,29 +56,35 @@ public class TryAVM2Item extends AVM2Item implements Block { public String toString(boolean highlight, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { String ret = ""; ret += hilight("try", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : tryCommands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); for (int e = 0; e < catchExceptions.size(); e++) { ret += "\r\n" + hilight("catch(" + catchExceptions.get(e).getVarName(constants, fullyQualifiedNames) + ":" + catchExceptions.get(e).getTypeName(constants, fullyQualifiedNames) + ")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; List commands = catchCommands.get(e); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); } if (finallyCommands.size() > 0) { ret += "\r\n" + hilight("finally", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : finallyCommands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); } return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/Action.java b/trunk/src/com/jpexs/decompiler/flash/action/Action.java index e72a3c626..6824b1a9e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/Action.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/Action.java @@ -725,7 +725,7 @@ public class Action implements GraphSourceItem { List tree = actionsToTree(new HashMap(), new HashMap(), new HashMap(), actions, version, staticOperation, path); - return Graph.graphToString(tree, highlight); + return Graph.graphToString(tree, highlight, true); } }, timeout, TimeUnit.SECONDS); } catch (TimeoutException ex) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java index b83290982..3957d96f6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java @@ -91,7 +91,11 @@ public class FunctionActionItem extends ActionItem { } ret += hilight(pname, highlight); } - ret += hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n" + Graph.graphToString(actions, highlight, constants) + hilight("}", highlight); + ret += hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; + ret += Graph.graphToString(actions, highlight, false, constants); + ret += Graph.INDENTCLOSE + "\r\n"; + ret += hilight("}", highlight); return ret; } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java index abe8bda06..d95e8a3f9 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java @@ -29,6 +29,7 @@ import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; import com.jpexs.decompiler.flash.helpers.Highlighting; import com.jpexs.decompiler.flash.helpers.collections.MyEntry; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; @@ -173,6 +174,7 @@ public class ClassActionItem extends ActionItem implements Block { } } ret += "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; if (constructor != null) { ret += constructor.toString(highlight, constants) + "\r\n"; @@ -196,6 +198,7 @@ public class ClassActionItem extends ActionItem implements Block { ret += hilight("static ", highlight) + f.toString(highlight, constants) + "\r\n"; } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; return ret; } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java index f11622eac..5315c3733 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java @@ -32,6 +32,7 @@ import com.jpexs.decompiler.flash.action.swf5.ActionStoreRegister; import com.jpexs.decompiler.flash.action.swf6.ActionEnumerate2; import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -66,9 +67,11 @@ public class ForInActionItem extends LoopActionItem implements Block { String ret = ""; ret += hilight("loop" + loop.id + ":", highlight) + "\r\n"; ret += hilight("for(", highlight) + ((variableName instanceof DirectValueActionItem) && (((DirectValueActionItem) variableName).value instanceof RegisterNumber) ? "var " : "") + stripQuotes(variableName, constants, highlight) + " in " + enumVariable.toString(highlight, constants) + ")\r\n{\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { ret += ti.toStringSemicoloned(highlight, constants) + "\r\n"; } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += hilight(":loop" + loop.id, highlight); return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java index 83cc145c7..3aa52ebd3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java @@ -45,7 +45,12 @@ public class IfFrameLoadedActionItem extends ActionItem implements Block { @Override public String toString(boolean highlight, ConstantPool constants) { - return hilight("ifFrameLoaded(", highlight) + frame.toString(highlight, constants) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n" + Graph.graphToString(actions, highlight, constants) + "}"; + String ret = hilight("ifFrameLoaded(", highlight) + frame.toString(highlight, constants) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; + ret += Graph.graphToString(actions, highlight, false, constants); + ret += Graph.INDENTCLOSE + "\r\n"; + ret += hilight("}", highlight); + return ret; } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java index 0b5e7fecc..47853de9a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.model.ActionItem; import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.action.swf3.ActionSetTarget; import com.jpexs.decompiler.flash.action.swf4.ActionSetTarget2; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; @@ -40,9 +41,11 @@ public class TellTargetActionItem extends ActionItem { @Override public String toString(boolean highlight, ConstantPool constants) { String ret = hilight("tellTarget(", highlight) + target.toString(highlight, constants) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { ret += ti.toString(highlight, constants) + "\r\n"; } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); return ret; } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java index ca8bd7c43..067b7f2e8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java @@ -24,6 +24,7 @@ import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf4.ActionJump; import com.jpexs.decompiler.flash.action.swf7.ActionTry; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; @@ -59,6 +60,7 @@ public class TryActionItem extends ActionItem implements Block { public String toString(boolean highlight, ConstantPool constants) { String ret = ""; ret += hilight("try", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; List localData = new ArrayList<>(); localData.add(constants); for (GraphTargetItem ti : tryCommands) { @@ -66,24 +68,29 @@ public class TryActionItem extends ActionItem implements Block { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); for (int e = 0; e < catchExceptions.size(); e++) { ret += "\r\n" + hilight("catch(", highlight) + catchExceptions.get(e).toStringNoQuotes(highlight, localData) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; List commands = catchCommands.get(e); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); } if (finallyCommands.size() > 0) { ret += "\r\n" + hilight("finally", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : finallyCommands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); } return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java index 647c6a41f..0700436de 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.model.ActionItem; import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.action.swf5.ActionWith; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; @@ -50,9 +51,11 @@ public class WithActionItem extends ActionItem { List localData = new ArrayList<>(); localData.add(constants); ret = hilight("with(", highlight) + scope.toString(highlight, localData) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : items) { ret += ti.toString(highlight, localData) + "\r\n"; } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); return ret; } diff --git a/trunk/src/com/jpexs/decompiler/graph/Graph.java b/trunk/src/com/jpexs/decompiler/graph/Graph.java index 6b4d40c0c..8a9163797 100644 --- a/trunk/src/com/jpexs/decompiler/graph/Graph.java +++ b/trunk/src/com/jpexs/decompiler/graph/Graph.java @@ -2155,7 +2155,7 @@ public class Graph { * @param localData * @return String */ - public static String graphToString(List tree, boolean highlight, Object... localData) { + public static String graphToString(List tree, boolean highlight, boolean replaceIndents, Object... localData) { StringBuilder ret = new StringBuilder(); List localDataList = Arrays.asList(localData); for (GraphTargetItem ti : tree) { @@ -2228,23 +2228,20 @@ public class Graph { continue; } strippedP = Highlighting.stripHilights(parts[p]).trim(); - if (strippedP.equals(INDENTOPEN)) { - level++; - continue; - } - if (strippedP.equals(INDENTCLOSE)) { - level--; - continue; - } - if (strippedP.startsWith("}")) { - level--; + + if (replaceIndents) { + if (strippedP.equals(INDENTOPEN)) { + level++; + continue; + } + if (strippedP.equals(INDENTCLOSE)) { + level--; + continue; + } } ret.append(tabString(level)); ret.append(parts[p].trim()); ret.append("\r\n"); - if (strippedP.equals("{")) { - level++; - } } return ret.toString(); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java b/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java index 6eb0204a7..410f30284 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java @@ -37,7 +37,9 @@ public class BlockItem extends GraphTargetItem { @Override public String toString(boolean highlight, List localData) { - return hilight("{", highlight) + "\r\n" + Graph.graphToString(commands, highlight, localData) + "\r\n" + hilight("}", highlight); + return hilight("{", highlight) + "\r\n" + Graph.INDENTOPEN + "\r\n" + + Graph.graphToString(commands, highlight, false, localData) + "\r\n" + + Graph.INDENTCLOSE + "\r\n" + hilight("}", highlight); } @Override diff --git a/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java b/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java index 97166c18c..f5600a033 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.graph.model; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -52,6 +53,7 @@ public class DoWhileItem extends LoopItem implements Block { String ret = ""; ret += hilight("loop" + loop.id + ":", highlight) + "\r\n"; ret += hilight("do", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; @@ -67,6 +69,7 @@ public class DoWhileItem extends LoopItem implements Block { } expStr += expression.get(i).toString(highlight, localData); } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n" + hilight("while(", highlight) + expStr + hilight(");", highlight) + "\r\n"; ret += hilight(":loop" + loop.id, highlight); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java b/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java index a3bb58eb0..a8c99208f 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.graph.model; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -87,11 +88,13 @@ public class ForItem extends LoopItem implements Block { p++; } ret += hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += ":loop" + loop.id; return ret; diff --git a/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java b/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java index a87098ead..b2750ff5a 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.graph.model; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; @@ -71,19 +72,23 @@ public class IfItem extends GraphTargetItem implements Block { } } ret = hilight("if(", highlight) + expr.toString(highlight, localData) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : ifBranch) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); if (elseBranch.size() > 0) { ret += "\r\n" + hilight("else", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : elseBranch) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight); } return ret; diff --git a/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java b/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java index 272617eae..f50bf6bf7 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java @@ -55,6 +55,7 @@ public class SwitchItem extends LoopItem implements Block { String ret = ""; ret += hilight("loopswitch" + loop.id + ":", highlight) + "\r\n"; ret += hilight("switch(", highlight) + switchedObject.toString(highlight, localData) + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (int i = 0; i < caseCommands.size(); i++) { for (int k = 0; k < valuesMapping.size(); k++) { if (valuesMapping.get(k) == i) { @@ -81,6 +82,7 @@ public class SwitchItem extends LoopItem implements Block { ret += Graph.INDENTCLOSE + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += ":loop" + loop.id; return ret; diff --git a/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java b/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java index ef0e32ff1..e3af080a3 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.graph.model; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -41,11 +42,13 @@ public class UniversalLoopItem extends LoopItem implements Block { ret += hilight("loop" + loop.id + ":", highlight) + "\r\n"; ret += hilight("while(true)", highlight); ret += "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += hilight(":loop" + loop.id, highlight); return ret; diff --git a/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java b/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java index 6d432fb15..6758f3a47 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.graph.model; import com.jpexs.decompiler.graph.Block; +import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; @@ -57,11 +58,13 @@ public class WhileItem extends LoopItem implements Block { expStr += expression.get(i).toString(highlight, localData); } ret += hilight("while(", highlight) + expStr + hilight(")", highlight) + "\r\n" + hilight("{", highlight) + "\r\n"; + ret += Graph.INDENTOPEN + "\r\n"; for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { ret += ti.toStringSemicoloned(highlight, localData) + "\r\n"; } } + ret += Graph.INDENTCLOSE + "\r\n"; ret += hilight("}", highlight) + "\r\n"; ret += hilight(":loop" + loop.id, highlight); return ret;