diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/AsciiToCharActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/AsciiToCharActionItem.java index c6db2f8f9..2d0f63740 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/AsciiToCharActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/AsciiToCharActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class AsciiToCharActionItem extends ActionItem { - private GraphTargetItem value; - public AsciiToCharActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java index aab1c7e1e..cd1f25982 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class CallActionItem extends ActionItem { - private GraphTargetItem value; - public CallActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java index 02f798660..5228d7a80 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java @@ -28,6 +28,11 @@ public class CallFunctionActionItem extends ActionItem { public List arguments; public GraphTargetItem calculatedFunction; + @Override + public List getAllSubItems() { + return arguments; + } + public CallFunctionActionItem(GraphSourceItem instruction, GraphTargetItem functionName, List arguments) { super(instruction, PRECEDENCE_PRIMARY); this.functionName = functionName; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java index ff44bc7ab..10d1d246e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class CallMethodActionItem extends ActionItem { @@ -29,6 +30,14 @@ public class CallMethodActionItem extends ActionItem { public GraphTargetItem scriptObject; public List arguments; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.addAll(arguments); + ret.add(scriptObject); + return ret; + } + public CallMethodActionItem(GraphSourceItem instruction, GraphTargetItem scriptObject, GraphTargetItem methodName, List arguments) { super(instruction, PRECEDENCE_PRIMARY); this.methodName = methodName; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java index 820c3342d..fce734e3d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.helpers.Helper; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class CastOpActionItem extends ActionItem { @@ -28,6 +29,14 @@ public class CastOpActionItem extends ActionItem { public GraphTargetItem constructor; public GraphTargetItem object; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(constructor); + ret.add(object); + return ret; + } + public CastOpActionItem(GraphSourceItem instruction, GraphTargetItem constructor, GraphTargetItem object) { super(instruction, PRECEDENCE_PRIMARY); this.constructor = constructor; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CharToAsciiActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CharToAsciiActionItem.java index 083efe1ec..0037d3a67 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CharToAsciiActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CharToAsciiActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class CharToAsciiActionItem extends ActionItem { - private GraphTargetItem value; - public CharToAsciiActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java index 68337f4dc..590c26b0d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionCloneSprite; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class CloneSpriteActionItem extends ActionItem { @@ -28,6 +29,15 @@ public class CloneSpriteActionItem extends ActionItem { public GraphTargetItem target; public GraphTargetItem depth; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(target); + ret.add(source); + ret.add(depth); + return ret; + } + public CloneSpriteActionItem(GraphSourceItem instruction, GraphTargetItem source, GraphTargetItem target, GraphTargetItem depth) { super(instruction, PRECEDENCE_PRIMARY); this.source = source; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/DecrementActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/DecrementActionItem.java index 921f204b1..3eb385476 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/DecrementActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/DecrementActionItem.java @@ -21,12 +21,20 @@ import com.jpexs.decompiler.flash.ecma.*; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class DecrementActionItem extends ActionItem { public GraphTargetItem object; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + return ret; + } + public DecrementActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_ADDITIVE); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java index 0091cc80f..c81c9baa3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.action.swf5.ActionDefineLocal2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class DefineLocalActionItem extends ActionItem implements SetTypeActionItem { @@ -29,6 +30,13 @@ public class DefineLocalActionItem extends ActionItem implements SetTypeActionIt //public GraphTargetItem value; private int tempRegister = -1; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(name); + return ret; + } + @Override public void setValue(GraphTargetItem value) { this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java index 6bde7cdff..ce3d171d5 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf5.ActionDelete; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class DeleteActionItem extends ActionItem { @@ -27,6 +28,14 @@ public class DeleteActionItem extends ActionItem { public GraphTargetItem object; public GraphTargetItem propertyName; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + ret.add(propertyName); + return ret; + } + public DeleteActionItem(GraphSourceItem instruction, GraphTargetItem object, GraphTargetItem propertyName) { super(instruction, PRECEDENCE_PRIMARY); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java index 87dca392b..3e83c59a1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java @@ -19,12 +19,20 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.helpers.Helper; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.ArrayList; import java.util.List; public class EnumerateActionItem extends ActionItem { public GraphTargetItem object; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + return ret; + } + public EnumerateActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_PRIMARY); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java index 29e03997c..4977ee9fd 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java @@ -30,6 +30,14 @@ public class FSCommand2ActionItem extends ActionItem { public List arguments; public GraphTargetItem command; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.addAll(arguments); + ret.add(command); + return ret; + } + public FSCommand2ActionItem(GraphSourceItem instruction, GraphTargetItem command, List arguments) { super(instruction, PRECEDENCE_PRIMARY); this.command = command; 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 e6bae96ea..42254a480 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java @@ -49,6 +49,13 @@ public class FunctionActionItem extends ActionItem { public static final int REGISTER_PARENT = 5; public static final int REGISTER_GLOBAL = 6; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.addAll(actions); + return ret; + } + public FunctionActionItem() { super(null, PRECEDENCE_PRIMARY); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java index 42eb9a9a0..bbc901f0c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf5.ActionGetMember; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class GetMemberActionItem extends ActionItem { @@ -27,6 +28,13 @@ public class GetMemberActionItem extends ActionItem { public GraphTargetItem object; public GraphTargetItem memberName; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + return ret; + } + public GetMemberActionItem(GraphSourceItem instruction, GraphTargetItem object, GraphTargetItem memberName) { super(instruction, PRECEDENCE_PRIMARY); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java index 83f50cb0b..234aa24e6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionPush; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class GetPropertyActionItem extends ActionItem { @@ -29,6 +30,13 @@ public class GetPropertyActionItem extends ActionItem { public GraphTargetItem target; public int propertyIndex; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(target); + return ret; + } + public GetPropertyActionItem(GraphSourceItem instruction, GraphTargetItem target, int propertyIndex) { super(instruction, PRECEDENCE_PRIMARY); this.target = target; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java index 45b6a1ff4..283b1a5ac 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class GetURL2ActionItem extends ActionItem { @@ -28,6 +29,14 @@ public class GetURL2ActionItem extends ActionItem { public GraphTargetItem targetString; public int sendVarsMethod; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(urlString); + ret.add(targetString); + return ret; + } + @Override public String toString(ConstantPool constants) { String methodStr = ""; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java index 1cea1af2c..a9bfaf0de 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class GetVariableActionItem extends ActionItem { @@ -31,6 +32,13 @@ public class GetVariableActionItem extends ActionItem { private boolean computedCompiletime = false; private boolean computedVariableComputed = false; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(name); + return ret; + } + public GetVariableActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.name = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java index f915b7139..292567bd3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGotoFrame2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class GotoFrame2ActionItem extends ActionItem { @@ -29,6 +30,13 @@ public class GotoFrame2ActionItem extends ActionItem { public boolean playFlag; public int sceneBias; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(frame); + return ret; + } + public GotoFrame2ActionItem(GraphSourceItem instruction, GraphTargetItem frame, boolean sceneBiasFlag, boolean playFlag, int sceneBias) { super(instruction, PRECEDENCE_PRIMARY); this.frame = frame; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/IncrementActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/IncrementActionItem.java index 4a983604a..2e70c0cb7 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/IncrementActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/IncrementActionItem.java @@ -21,12 +21,20 @@ import com.jpexs.decompiler.flash.ecma.*; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class IncrementActionItem extends ActionItem { public GraphTargetItem object; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + return ret; + } + public IncrementActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_ADDITIVE); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java index d6e7953cb..8bab7098c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java @@ -21,12 +21,20 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class InitArrayActionItem extends ActionItem { public List values; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.addAll(values); + return ret; + } + public InitArrayActionItem(GraphSourceItem instruction, List values) { super(instruction, PRECEDENCE_PRIMARY); this.values = values; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java index 1546da4fc..6e25ea1c3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java @@ -29,6 +29,14 @@ public class InitObjectActionItem extends ActionItem { public List names; public List values; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.addAll(names); + ret.addAll(values); + return ret; + } + public InitObjectActionItem(GraphSourceItem instruction, List names, List values) { super(instruction, PRECEDENCE_PRIMARY); this.values = values; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java index 94e501321..41bce1660 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -32,6 +33,14 @@ public class LoadMovieActionItem extends ActionItem { private GraphTargetItem targetString; private int method; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(urlString); + ret.add(targetString); + return ret; + } + public LoadMovieActionItem(GraphSourceItem instruction, GraphTargetItem urlString, GraphTargetItem targetString, int method) { super(instruction, PRECEDENCE_PRIMARY); this.urlString = urlString; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java index 26bd8363f..473680e68 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -34,6 +35,14 @@ public class LoadMovieNumActionItem extends ActionItem { private GraphTargetItem num; private int method; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(urlString); + ret.add(num); + return ret; + } + public LoadMovieNumActionItem(GraphSourceItem instruction, GraphTargetItem urlString, GraphTargetItem num, int method) { super(instruction, PRECEDENCE_PRIMARY); this.urlString = urlString; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java index 735894d78..c33931356 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -32,6 +33,14 @@ public class LoadVariablesActionItem extends ActionItem { private GraphTargetItem targetString; private int method; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(urlString); + ret.add(targetString); + return ret; + } + public LoadVariablesActionItem(GraphSourceItem instruction, GraphTargetItem urlString, GraphTargetItem targetString, int method) { super(instruction, PRECEDENCE_PRIMARY); this.urlString = urlString; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java index 015d43ca0..20f828183 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -34,6 +35,14 @@ public class LoadVariablesNumActionItem extends ActionItem { private GraphTargetItem num; private int method; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(urlString); + ret.add(num); + return ret; + } + public LoadVariablesNumActionItem(GraphSourceItem instruction, GraphTargetItem urlString, GraphTargetItem num, int method) { super(instruction, PRECEDENCE_PRIMARY); this.urlString = urlString; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/MBAsciiToCharActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/MBAsciiToCharActionItem.java index b14d04f13..5b6d5ca39 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/MBAsciiToCharActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/MBAsciiToCharActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class MBAsciiToCharActionItem extends ActionItem { - private GraphTargetItem value; - public MBAsciiToCharActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/MBCharToAsciiActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/MBCharToAsciiActionItem.java index 205e0cb05..588c8370e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/MBCharToAsciiActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/MBCharToAsciiActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class MBCharToAsciiActionItem extends ActionItem { - private GraphTargetItem value; - public MBCharToAsciiActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/MBStringExtractActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/MBStringExtractActionItem.java index 295b9ccd7..bfbbb302e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/MBStringExtractActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/MBStringExtractActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionMBStringExtract; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class MBStringExtractActionItem extends ActionItem { @@ -28,6 +29,15 @@ public class MBStringExtractActionItem extends ActionItem { public GraphTargetItem index; public GraphTargetItem count; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(value); + ret.add(index); + ret.add(count); + return ret; + } + public MBStringExtractActionItem(GraphSourceItem instruction, GraphTargetItem value, GraphTargetItem index, GraphTargetItem count) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java index 943290fc6..e37e5b5cd 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class NewMethodActionItem extends ActionItem { @@ -29,6 +30,14 @@ public class NewMethodActionItem extends ActionItem { public GraphTargetItem scriptObject; public List arguments; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(scriptObject); + ret.addAll(arguments); + return ret; + } + public NewMethodActionItem(GraphSourceItem instruction, GraphTargetItem scriptObject, GraphTargetItem methodName, List arguments) { super(instruction, PRECEDENCE_PRIMARY); this.methodName = methodName; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java index 3b3f7942e..36bd56f75 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.action.swf5.ActionNewObject; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class NewObjectActionItem extends ActionItem { @@ -27,6 +28,14 @@ public class NewObjectActionItem extends ActionItem { public GraphTargetItem objectName; public List arguments; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(objectName); + ret.addAll(arguments); + return ret; + } + public NewObjectActionItem(GraphSourceItem instruction, GraphTargetItem objectName, List arguments) { super(instruction, PRECEDENCE_PRIMARY); this.objectName = objectName; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PostDecrementActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PostDecrementActionItem.java index 86ef313c1..f3c5b0476 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PostDecrementActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PostDecrementActionItem.java @@ -36,6 +36,13 @@ public class PostDecrementActionItem extends ActionItem implements SetTypeAction public GraphTargetItem object; private int tempRegister = -1; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + return ret; + } + public PostDecrementActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_POSTFIX); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PostIncrementActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PostIncrementActionItem.java index e3c10c5d0..e54d46441 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PostIncrementActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PostIncrementActionItem.java @@ -36,6 +36,13 @@ public class PostIncrementActionItem extends ActionItem implements SetTypeAction public GraphTargetItem object; private int tempRegister = -1; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + return ret; + } + public PostIncrementActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_POSTFIX); this.object = object; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java index a4b81d2f1..ddf1ac0e3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -33,6 +34,14 @@ public class PrintActionItem extends ActionItem { private GraphTargetItem target; private GraphTargetItem boundingBox; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(target); + ret.add(boundingBox); + return ret; + } + public PrintActionItem(GraphSourceItem instruction, GraphTargetItem target, GraphTargetItem boundingBox) { super(instruction, PRECEDENCE_PRIMARY); this.target = target; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java index 5607a78d8..e4212c6f5 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java @@ -23,6 +23,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import static com.jpexs.decompiler.graph.GraphTargetItem.PRECEDENCE_PRIMARY; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -34,6 +35,14 @@ public class PrintAsBitmapActionItem extends ActionItem { private GraphTargetItem target; private GraphTargetItem boundingBox; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(target); + ret.add(boundingBox); + return ret; + } + public PrintAsBitmapActionItem(GraphSourceItem instruction, GraphTargetItem target, GraphTargetItem boundingBox) { super(instruction, PRECEDENCE_PRIMARY); this.target = target; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java index 4e1fa03e7..8fb80ddce 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -33,6 +34,14 @@ public class PrintAsBitmapNumActionItem extends ActionItem { private GraphTargetItem num; private GraphTargetItem boundingBox; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(num); + ret.add(boundingBox); + return ret; + } + public PrintAsBitmapNumActionItem(GraphSourceItem instruction, GraphTargetItem num, GraphTargetItem boundingBox) { super(instruction, PRECEDENCE_PRIMARY); this.num = num; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java index e1f8c3056..2a946f23f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -33,6 +34,14 @@ public class PrintNumActionItem extends ActionItem { private GraphTargetItem num; private GraphTargetItem boundingBox; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(num); + ret.add(boundingBox); + return ret; + } + public PrintNumActionItem(GraphSourceItem instruction, GraphTargetItem num, GraphTargetItem boundingBox) { super(instruction, PRECEDENCE_PRIMARY); this.num = num; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/RandomNumberActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/RandomNumberActionItem.java index 46339f599..40a99e0db 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/RandomNumberActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/RandomNumberActionItem.java @@ -24,28 +24,26 @@ import java.util.List; public class RandomNumberActionItem extends ActionItem { - private GraphTargetItem maximum; - public RandomNumberActionItem(GraphSourceItem instruction, GraphTargetItem maximum) { super(instruction, PRECEDENCE_PRIMARY); - this.maximum = maximum; + this.value = maximum; } @Override public String toString(ConstantPool constants) { - return hilight("random(") + maximum.toString(constants) + hilight(")"); + return hilight("random(") + value.toString(constants) + hilight(")"); } @Override public List getNeededSources() { List ret = super.getNeededSources(); - ret.addAll(maximum.getNeededSources()); + ret.addAll(value.getNeededSources()); return ret; } @Override public List toSource(List localData, SourceGenerator generator) { - return toSourceMerge(localData, generator, maximum, new ActionRandomNumber()); + return toSourceMerge(localData, generator, value, new ActionRandomNumber()); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java index 3c8c85be9..7abe3f095 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java @@ -24,28 +24,26 @@ import java.util.List; public class RemoveSpriteActionItem extends ActionItem { - private GraphTargetItem target; - public RemoveSpriteActionItem(GraphSourceItem instruction, GraphTargetItem target) { super(instruction, PRECEDENCE_PRIMARY); - this.target = target; + this.value = target; } @Override public String toString(ConstantPool constants) { - return hilight("removeMovieClip(") + target.toString(constants) + hilight(")"); + return hilight("removeMovieClip(") + value.toString(constants) + hilight(")"); } @Override public List getNeededSources() { List ret = super.getNeededSources(); - ret.addAll(target.getNeededSources()); + ret.addAll(value.getNeededSources()); return ret; } @Override public List toSource(List localData, SourceGenerator generator) { - return toSourceMerge(localData, generator, target, new ActionRemoveSprite()); + return toSourceMerge(localData, generator, value, new ActionRemoveSprite()); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java index 1f0b155ca..6efbb9d81 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java @@ -25,6 +25,7 @@ import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; public class SetMemberActionItem extends ActionItem implements SetTypeActionItem { @@ -34,6 +35,14 @@ public class SetMemberActionItem extends ActionItem implements SetTypeActionItem //public GraphTargetItem value; private int tempRegister = -1; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(object); + ret.add(value); + return ret; + } + @Override public GraphPart getFirstPart() { return value.getFirstPart(); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java index 7b0311841..9293f4f3a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java @@ -24,28 +24,26 @@ import java.util.List; public class TargetPathActionItem extends ActionItem { - public GraphTargetItem object; - public TargetPathActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_PRIMARY); - this.object = object; + this.value = object; } @Override public String toString(ConstantPool constants) { - return "targetPath(" + object.toString(constants) + ")"; + return "targetPath(" + value.toString(constants) + ")"; } @Override public List getNeededSources() { List ret = super.getNeededSources(); - ret.addAll(object.getNeededSources()); + ret.addAll(value.getNeededSources()); return ret; } @Override public List toSource(List localData, SourceGenerator generator) { - return toSourceMerge(localData, generator, object, new ActionTargetPath()); + return toSourceMerge(localData, generator, value, new ActionTargetPath()); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java index c9938e640..bc1eb05a2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java @@ -26,28 +26,26 @@ import java.util.List; public class ThrowActionItem extends ActionItem { - public GraphTargetItem object; - public ThrowActionItem(GraphSourceItem instruction, GraphTargetItem object) { super(instruction, PRECEDENCE_PRIMARY); - this.object = object; + this.value = object; } @Override public String toString(ConstantPool constants) { - return hilight("throw ") + object.toString(Helper.toList(constants)); + return hilight("throw ") + value.toString(Helper.toList(constants)); } @Override public List getNeededSources() { List ret = super.getNeededSources(); - ret.addAll(object.getNeededSources()); + ret.addAll(value.getNeededSources()); return ret; } @Override public List toSource(List localData, SourceGenerator generator) { - return toSourceMerge(localData, generator, object, new ActionThrow()); + return toSourceMerge(localData, generator, value, new ActionThrow()); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ToIntegerActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ToIntegerActionItem.java index f06576e29..b6246ffb2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ToIntegerActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ToIntegerActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class ToIntegerActionItem extends ActionItem { - private GraphTargetItem value; - public ToIntegerActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java index aa092a6df..c8b9ff12f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java @@ -25,8 +25,6 @@ import java.util.List; public class ToNumberActionItem extends ActionItem { - private GraphTargetItem value; - public ToNumberActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java index 4e510f973..d0686220d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java @@ -25,8 +25,6 @@ import java.util.List; public class ToStringActionItem extends ActionItem { - private GraphTargetItem value; - public ToStringActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java index aec0fe2e1..bb865e4a8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java @@ -24,8 +24,6 @@ import java.util.List; public class TraceActionItem extends ActionItem { - private GraphTargetItem value; - public TraceActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java index a34c962c8..3e35373c0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java @@ -27,8 +27,6 @@ import java.util.List; public class TypeOfActionItem extends ActionItem { - private GraphTargetItem value; - public TypeOfActionItem(GraphSourceItem instruction, GraphTargetItem value) { super(instruction, PRECEDENCE_PRIMARY); this.value = value; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java index 4caf1f4b2..59a3fd459 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionPush; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -31,6 +32,13 @@ public class UnLoadMovieActionItem extends ActionItem { private GraphTargetItem targetString; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(targetString); + return ret; + } + public UnLoadMovieActionItem(GraphSourceItem instruction, GraphTargetItem targetString) { super(instruction, PRECEDENCE_PRIMARY); this.targetString = targetString; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java index 7a46ce692..237085056 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java @@ -23,6 +23,7 @@ import com.jpexs.decompiler.flash.action.swf4.ActionPush; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.ArrayList; import java.util.List; /** @@ -33,6 +34,13 @@ public class UnLoadMovieNumActionItem extends ActionItem { private GraphTargetItem num; + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(num); + return ret; + } + public UnLoadMovieNumActionItem(GraphSourceItem instruction, GraphTargetItem num) { super(instruction, PRECEDENCE_PRIMARY); this.num = num; 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 28064ff5b..59f844db8 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 @@ -19,8 +19,15 @@ package com.jpexs.decompiler.flash.action.model.clauses; 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.model.DirectValueActionItem; +import com.jpexs.decompiler.flash.action.model.FunctionActionItem; +import com.jpexs.decompiler.flash.action.model.GetMemberActionItem; +import com.jpexs.decompiler.flash.action.model.GetVariableActionItem; +import com.jpexs.decompiler.flash.action.model.SetMemberActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; +import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; import com.jpexs.decompiler.flash.helpers.Helper; +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.GraphSourceItem; @@ -28,7 +35,9 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.model.ContinueItem; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class ClassActionItem extends ActionItem implements Block { @@ -40,6 +49,7 @@ public class ClassActionItem extends ActionItem implements Block { public GraphTargetItem constructor; public List> vars; public List> staticVars; + public Set uninitializedVars; @Override public List> getSubs() { @@ -59,6 +69,89 @@ public class ClassActionItem extends ActionItem implements Block { this.staticFunctions = staticFunctions; this.staticVars = staticVars; this.constructor = constructor; + + List allFunc = new ArrayList<>(functions); + if (constructor != null) { + allFunc.add(constructor); + } + this.uninitializedVars = new HashSet<>(); + List allUsages = new ArrayList<>(); + for (GraphTargetItem it : allFunc) { + if (it instanceof FunctionActionItem) { + FunctionActionItem f = (FunctionActionItem) it; + detectUnitializedVars(f.actions, allUsages); + } + } + Set allMembers = new HashSet<>(); + for (GraphTargetItem it : allUsages) { + allMembers.add(Highlighting.stripHilights(it.toStringNoQuotes(new ArrayList<>()))); + } + uninitializedVars.addAll(allMembers); + for (MyEntry v : vars) { + String s = Highlighting.stripHilights(v.key.toStringNoQuotes(new ArrayList<>())); + if (uninitializedVars.contains(s)) { + uninitializedVars.remove(s); + } + } + } + + private boolean isThis(GraphTargetItem item) { + if (item instanceof DirectValueActionItem) { + DirectValueActionItem di = (DirectValueActionItem) item; + if (di.value instanceof RegisterNumber) { + RegisterNumber rn = (RegisterNumber) di.value; + if ("this".equals(rn.name)) { + return true; + } + } + } + if (item instanceof GetVariableActionItem) { + GetVariableActionItem gv = (GetVariableActionItem) item; + if (gv.name instanceof DirectValueActionItem) { + DirectValueActionItem di = (DirectValueActionItem) gv.name; + if ("this".equals(di.toStringNoH(null))) { + return true; + } + } + } + return false; + } + + private void detectUnitializedVars(GraphTargetItem item, List ret) { + if (item == null) { + return; + } + + if (item instanceof GetMemberActionItem) { + GetMemberActionItem gm = (GetMemberActionItem) item; + if (isThis(gm.object)) { + ret.add(gm.memberName); + } else { + detectUnitializedVars(gm.object, ret); + } + } + if (item instanceof SetMemberActionItem) { + SetMemberActionItem sm = (SetMemberActionItem) item; + if (isThis(sm.object)) { + ret.add(sm.objectName); + } else { + detectUnitializedVars(sm.object, ret); + } + } + + if (item instanceof Block) { + Block bl = (Block) item; + for (List list : bl.getSubs()) { + detectUnitializedVars(list, ret); + } + } + detectUnitializedVars(item.getAllSubItems(), ret); + } + + private void detectUnitializedVars(List items, List ret) { + for (GraphTargetItem it : items) { + detectUnitializedVars(it, ret); + } } @Override @@ -80,18 +173,29 @@ public class ClassActionItem extends ActionItem implements Block { } } ret += "\r\n{\r\n"; + + if (constructor != null) { + ret += constructor.toString(constants) + "\r\n"; + } + + for (MyEntry item : vars) { + ret += "var " + item.key.toStringNoQuotes(constants) + " = " + item.value.toString(constants) + ";\r\n"; + } + for (String v : uninitializedVars) { + ret += "var " + v + ";\r\n"; + } + for (MyEntry item : staticVars) { + ret += "static var " + item.key.toStringNoQuotes(constants) + " = " + item.value.toString(constants) + ";\r\n"; + } + + for (GraphTargetItem f : functions) { ret += f.toString(constants) + "\r\n"; } for (GraphTargetItem f : staticFunctions) { ret += "static " + f.toString(constants) + "\r\n"; } - for (MyEntry item : vars) { - ret += "var " + item.key.toStringNoQuotes(constants) + " = " + item.value.toString(constants) + ";\r\n"; - } - for (MyEntry item : staticVars) { - ret += "static var " + item.key.toStringNoQuotes(constants) + " = " + item.value.toString(constants) + ";\r\n"; - } + ret += "}\r\n"; return ret; } diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java b/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java index eac528606..0c8b7ff6b 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java @@ -71,7 +71,7 @@ public class ErrorLogFrame extends AppFrame { logView.setLayout(new BoxLayout(logView, BoxLayout.Y_AXIS)); cnt.setBackground(Color.white); - cnt.add(new JScrollPane(logView),BorderLayout.NORTH); + cnt.add(new JScrollPane(logView), BorderLayout.NORTH); handler = new Handler() { @Override public void publish(LogRecord record) { @@ -156,12 +156,12 @@ public class ErrorLogFrame extends AppFrame { expandButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - if(expandButton.isSelected()){ + if (expandButton.isSelected()) { expandButton.setIcon(View.getIcon("expand16")); } scrollPane.setVisible(expandButton.isSelected()); scrollPane.setMinimumSize(new Dimension(getWidth(), 500)); - scrollPane.setSize(new Dimension(getWidth(), 500)); + scrollPane.setSize(new Dimension(getWidth(), 500)); revalidate(); repaint(); } diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/MainFrame.java b/trunk/src/com/jpexs/decompiler/flash/gui/MainFrame.java index 4e1be1306..373f35155 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/MainFrame.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/MainFrame.java @@ -101,7 +101,6 @@ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Graphics; -import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; @@ -1445,7 +1444,7 @@ public class MainFrame extends AppRibbonFrame implements ActionListener, TreeSel @Override public void close() throws SecurityException { } - }); + }); } public void enableDrop(boolean value) { diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java index 4574e8ddf..74a981c06 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java @@ -32,14 +32,8 @@ import com.jpexs.decompiler.flash.types.GLYPHENTRY; import com.jpexs.decompiler.flash.types.MATRIX; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.decompiler.flash.types.RGBA; -import com.jpexs.decompiler.flash.types.SHAPE; import com.jpexs.decompiler.flash.types.TEXTRECORD; -import com.jpexs.decompiler.flash.types.shaperecords.SHAPERECORD; -import java.awt.Color; -import java.awt.Graphics2D; import java.awt.Point; -import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java index e07cb0ef0..06f8e234a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java @@ -32,14 +32,8 @@ import com.jpexs.decompiler.flash.types.GLYPHENTRY; import com.jpexs.decompiler.flash.types.MATRIX; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.decompiler.flash.types.RGB; -import com.jpexs.decompiler.flash.types.SHAPE; import com.jpexs.decompiler.flash.types.TEXTRECORD; -import com.jpexs.decompiler.flash.types.shaperecords.SHAPERECORD; -import java.awt.Color; -import java.awt.Graphics2D; import java.awt.Point; -import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java index d0b0e4c42..e5261ac5f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java @@ -30,11 +30,7 @@ import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.GraphicsEnvironment; -import java.awt.Point; import java.awt.RenderingHints; -import java.awt.font.FontRenderContext; -import java.awt.font.GlyphMetrics; -import java.awt.font.GlyphVector; import java.awt.font.LineMetrics; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; diff --git a/trunk/src/com/jpexs/decompiler/flash/types/SHAPE.java b/trunk/src/com/jpexs/decompiler/flash/types/SHAPE.java index b25ee4529..6c3933eca 100644 --- a/trunk/src/com/jpexs/decompiler/flash/types/SHAPE.java +++ b/trunk/src/com/jpexs/decompiler/flash/types/SHAPE.java @@ -19,8 +19,6 @@ package com.jpexs.decompiler.flash.types; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.tags.base.NeedsCharacters; import com.jpexs.decompiler.flash.types.shaperecords.SHAPERECORD; -import com.jpexs.decompiler.flash.types.shaperecords.StyleChangeRecord; -import java.awt.Point; import java.awt.image.BufferedImage; import java.util.HashSet; import java.util.List; diff --git a/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java b/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java index 1c3811183..6415980bb 100644 --- a/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java @@ -231,4 +231,12 @@ public abstract class GraphTargetItem implements Serializable { } public abstract boolean hasReturnValue(); + + public List getAllSubItems() { + List ret = new ArrayList<>(); + if (value != null) { + ret.add(value); + } + return ret; + } } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOp.java b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOp.java index c577d8170..062df3986 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOp.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOp.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.graph.model; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.List; /** * @@ -33,4 +34,6 @@ public interface BinaryOp { public void setRightSide(GraphTargetItem value); public int getPrecedence(); + + public List getAllSubItems(); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java index 97ef1f5ef..7a0adfbfc 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.ArrayList; import java.util.List; public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp { @@ -174,4 +175,12 @@ public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp { public boolean hasReturnValue() { return true; } + + @Override + public List getAllSubItems() { + List ret = new ArrayList<>(); + ret.add(getLeftSide()); + ret.add(getRightSide()); + return ret; + } }