This commit is contained in:
Jindra Pet��k
2014-03-29 09:57:30 +01:00
83 changed files with 321 additions and 114 deletions
@@ -52,6 +52,7 @@ public class CallAVM2Item extends AVM2Item {
} else {
function.toString(writer, localData);
}
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
@@ -41,6 +41,7 @@ public class CallMethodAVM2Item extends AVM2Item {
receiver.toString(writer, localData);
writer.append(".");
writer.append(methodName);
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
@@ -46,6 +46,7 @@ public class CallPropertyAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
formatProperty(writer, receiver, propertyName, localData);
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
@@ -41,6 +41,7 @@ public class CallStaticAVM2Item extends AVM2Item {
receiver.toString(writer, localData);
writer.append(".");
writer.append(methodName);
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
@@ -41,6 +41,7 @@ public class ConstructAVM2Item extends AVM2Item {
}
writer.append("new ");
object.toString(writer, localData);
writer.spaceBeforeCallParenthesies(args.size());
writer.append("(");
for (int a = 0; a < args.size(); a++) {
if (a > 0) {
@@ -45,6 +45,7 @@ public class ConstructPropAVM2Item extends AVM2Item {
writer.append(".");
}
propertyName.toString(writer, localData);
writer.spaceBeforeCallParenthesies(args.size());
writer.append("(");
for (int a = 0; a < args.size(); a++) {
if (a > 0) {
@@ -44,6 +44,7 @@ public class ConstructSuperAVM2Item extends AVM2Item {
object.toString(writer, localData);
writer.append(".");
}
writer.spaceBeforeCallParenthesies(args.size());
writer.append("super(");
for (int a = 0; a < args.size(); a++) {
if (a > 0) {
@@ -39,7 +39,9 @@ public class NextNameAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("nextName(");
writer.append("nextName");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
index.toString(writer, localData);
writer.append(",");
obj.toString(writer, localData);
@@ -39,7 +39,9 @@ public class NextValueAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("nextValue(");
writer.append("nextValue");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
index.toString(writer, localData);
writer.append(",");
obj.toString(writer, localData);
@@ -41,7 +41,10 @@ public class SetGlobalSlotAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("setglobalslot(" + slotId + ",");
writer.append("setglobalslot");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
writer.append(slotId + ",");
value.toString(writer, localData);
return writer.append(")");
}
@@ -43,7 +43,11 @@ public class WithAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("with(");
writer.append("with");
if (writer.getFormatting().spaceBeforeParenthesesWithParentheses) {
writer.append(" ");
}
writer.append("(");
scope.toString(writer, localData);
writer.append(")").newLine();
writer.append("{").newLine();
@@ -82,7 +82,11 @@ public class ForEachInAVM2Item extends LoopItem implements Block {
if (labelUsed) {
writer.append("loop" + loop.id + ":").newLine();
}
writer.append("for each (");
writer.append("for each");
if (writer.getFormatting().spaceBeforeParenthesesForEachParentheses) {
writer.append(" ");
}
writer.append("(");
expression.toString(writer, localData);
writer.append(")").newLine();
writer.append("{").newLine();
@@ -82,7 +82,11 @@ public class ForInAVM2Item extends LoopItem implements Block {
if (labelUsed) {
writer.append("loop" + loop.id + ":").newLine();
}
writer.append("for (");
writer.append("for");
if (writer.getFormatting().spaceBeforeParenthesesForParentheses) {
writer.append(" ");
}
writer.append("(");
expression.toString(writer, localData);
writer.append(")").newLine();
writer.append("{").newLine();
@@ -159,7 +159,8 @@ public class Traits implements Serializable {
futureResults = new ArrayList<>();
for (int t = 0; t < traits.size(); t++) {
TraitConvertTask task = new TraitConvertTask(traits.get(t), parent, makePackages, path, abcTags, abc, isStatic, exportMode, scriptIndex, classIndex, writer, fullyQualifiedNames, t, parallel);
// each convert task needs a separate NulWriter, because they are executed parallel
TraitConvertTask task = new TraitConvertTask(traits.get(t), parent, makePackages, path, abcTags, abc, isStatic, exportMode, scriptIndex, classIndex, new NulWriter(), fullyQualifiedNames, t, parallel);
Future<Void> future = executor.submit(task);
futureResults.add(future);
}
@@ -35,7 +35,9 @@ public class AsciiToCharActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("chr(");
writer.append("chr");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class CallActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("call(");
writer.append("call");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
stripQuotes(value, localData, writer);
return writer.append(")");
}
@@ -48,6 +48,7 @@ public class CallFunctionActionItem extends ActionItem {
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
String paramStr = "";
stripQuotes(functionName, localData, writer);
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int t = 0; t < arguments.size(); t++) {
if (t > 0) {
@@ -75,6 +75,7 @@ public class CallMethodActionItem extends ActionItem {
} else {
scriptObject.toString(writer, localData);
}
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int t = 0; t < arguments.size(); t++) {
@@ -36,7 +36,9 @@ public class CharToAsciiActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("ord(");
writer.append("ord");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -51,7 +51,9 @@ public class CloneSpriteActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("duplicateMovieClip(");
writer.append("duplicateMovieClip");
writer.spaceBeforeCallParenthesies(3);
writer.append("(");
target.toString(writer, localData);
writer.append(",");
source.toString(writer, localData);
@@ -38,7 +38,9 @@ public class EvalActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("eval(");
writer.append("eval");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -50,7 +50,9 @@ public class FSCommand2ActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("FSCommand2(");
writer.append("FSCommand2");
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
command.toString(writer, localData);
for (int t = 0; t < arguments.size(); t++) {
writer.append(",");
@@ -40,7 +40,9 @@ public class FSCommandActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
writer.append("fscommand(\"");
writer.append("fscommand");
writer.spaceBeforeCallParenthesies(1);
writer.append("(\"");
writer.append(Helper.escapeString(command));
return writer.append("\")");
}
@@ -85,6 +85,7 @@ public class FunctionActionItem extends ActionItem {
writer.append(" ");
writer.append(functionName);
}
writer.spaceBeforeCallParenthesies(paramNames.size());
writer.append("(");
for (int p = 0; p < paramNames.size(); p++) {
@@ -35,7 +35,9 @@ public class GetTimeActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("getTimer()");
writer.append("getTimer");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
@Override
@@ -51,7 +51,9 @@ public class GetURL2ActionItem extends ActionItem {
methodStr = ",\"POST\"";
}
writer.append("getURL(");
writer.append("getURL");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
urlString.toString(writer, localData);
writer.append(",");
targetString.toString(writer, localData);
@@ -32,7 +32,9 @@ public class GetURLActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
writer.append("getUrl(\"");
writer.append("getUrl");
writer.spaceBeforeCallParenthesies(2);
writer.append("(\"");
writer.append(Helper.escapeString(urlString) + "\", \"" + Helper.escapeString(targetString));
return writer.append("\")");
}
@@ -37,7 +37,9 @@ public class GetVersionActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("getVersion()");
writer.append("getVersion");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
@Override
@@ -55,7 +55,9 @@ public class GotoFrame2ActionItem extends ActionItem {
if (playFlag) {
prefix = "gotoAndPlay";
}
writer.append(prefix + "(");
writer.append(prefix);
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
frame.toString(writer, localData);
writer.append((sceneBiasFlag ? "," + sceneBias : ""));
return writer.append(")");
@@ -35,7 +35,9 @@ public class GotoFrameActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
writer.append("gotoAndStop(");
writer.append("gotoAndStop");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
writer.append("" + (frame + 1));
return writer.append(")");
}
@@ -36,7 +36,9 @@ public class GotoLabelActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
writer.append("gotoAndStop(\"");
writer.append("gotoAndStop");
writer.spaceBeforeCallParenthesies(1);
writer.append("(\"");
writer.append(Helper.escapeString(label));
return writer.append("\")");
}
@@ -60,7 +60,9 @@ public class LoadMovieActionItem extends ActionItem {
if (method == 2) {
methodStr = ",\"POST\"";
}
writer.append("loadMovie(");
writer.append("loadMovie");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
urlString.toString(writer, localData);
writer.append(",");
targetString.toString(writer, localData);
@@ -62,7 +62,9 @@ public class LoadMovieNumActionItem extends ActionItem {
if (method == 2) {
methodStr = ",\"POST\"";
}
writer.append("loadMovieNum(");
writer.append("loadMovieNum");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
urlString.toString(writer, localData);
writer.append(",");
num.toString(writer, localData);
@@ -60,7 +60,9 @@ public class LoadVariablesActionItem extends ActionItem {
if (method == 2) {
methodStr = ",\"POST\"";
}
writer.append("loadVariables(");
writer.append("loadVariables");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
urlString.toString(writer, localData);
writer.append(",");
targetString.toString(writer, localData);
@@ -62,7 +62,9 @@ public class LoadVariablesNumActionItem extends ActionItem {
if (method == 2) {
methodStr = ",\"POST\"";
}
writer.append("loadVariablesNum(");
writer.append("loadVariablesNum");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
urlString.toString(writer, localData);
writer.append(",");
num.toString(writer, localData);
@@ -35,7 +35,9 @@ public class MBAsciiToCharActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("mbchr(");
writer.append("mbchr");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class MBCharToAsciiActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("mbord(");
writer.append("mbord");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -51,7 +51,9 @@ public class MBStringExtractActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("mbsubstring(");
writer.append("mbsubstring");
writer.spaceBeforeCallParenthesies(3);
writer.append("(");
value.toString(writer, localData);
writer.append(",");
index.toString(writer, localData);
@@ -36,7 +36,9 @@ public class MBStringLengthActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("mblength(");
writer.append("mblength");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
if (value.getPrecedence() > precedence) {
writer.append("(");
value.toString(writer, localData);
@@ -78,6 +78,7 @@ public class NewMethodActionItem extends ActionItem {
methodName.toString(writer, localData);
}
}
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int t = 0; t < arguments.size(); t++) {
if (t > 0) {
@@ -50,6 +50,7 @@ public class NewObjectActionItem extends ActionItem {
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("new ");
stripQuotes(objectName, localData, writer);
writer.spaceBeforeCallParenthesies(arguments.size());
writer.append("(");
for (int t = 0; t < arguments.size(); t++) {
if (t > 0) {
@@ -28,7 +28,9 @@ public class NextFrameActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("nextFrame()");
writer.append("nextFrame");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public NextFrameActionItem(GraphSourceItem instruction) {
@@ -28,7 +28,9 @@ public class PlayActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("play()");
writer.append("play");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public PlayActionItem(GraphSourceItem instruction) {
@@ -28,7 +28,9 @@ public class PrevFrameActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("prevFrame()");
writer.append("prevFrame");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public PrevFrameActionItem(GraphSourceItem instruction) {
@@ -53,7 +53,9 @@ public class PrintActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("print(");
writer.append("print");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
target.toString(writer, localData);
writer.append(",");
boundingBox.toString(writer, localData);
@@ -53,7 +53,9 @@ public class PrintAsBitmapActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("printAsBitmap(");
writer.append("printAsBitmap");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
target.toString(writer, localData);
writer.append(",");
boundingBox.toString(writer, localData);
@@ -53,7 +53,9 @@ public class PrintAsBitmapNumActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("printAsBitmapNum(");
writer.append("printAsBitmapNum");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
num.toString(writer, localData);
writer.append(",");
boundingBox.toString(writer, localData);
@@ -53,7 +53,9 @@ public class PrintNumActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("printNum(");
writer.append("printNum");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
num.toString(writer, localData);
writer.append(",");
boundingBox.toString(writer, localData);
@@ -35,7 +35,9 @@ public class RandomNumberActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("random(");
writer.append("random");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class RemoveSpriteActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("removeMovieClip(");
writer.append("removeMovieClip");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -36,7 +36,9 @@ public class SetTarget2ActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("tellTarget(");
writer.append("tellTarget");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
target.toString(writer, localData);
return writer.append(")");
}
@@ -77,7 +77,9 @@ public class SetVariableActionItem extends ActionItem implements SetTypeActionIt
writer.append(" = ");
return value.toString(writer, localData);
} else {
writer.append("set(");
writer.append("set");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
name.toString(writer, localData);
writer.append(",");
value.toString(writer, localData);
@@ -56,7 +56,9 @@ public class StartDragActionItem extends ActionItem {
hasConstrains = false;
}
}
writer.append("startDrag(");
writer.append("startDrag");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
target.toString(writer, localData);
writer.append(",");
lockCenter.toString(writer, localData);
@@ -28,7 +28,9 @@ public class StopActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("stop()");
writer.append("stop");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public StopActionItem(GraphSourceItem instruction) {
@@ -28,7 +28,9 @@ public class StopAllSoundsActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("stopAllSounds()");
writer.append("stopAllSounds");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public StopAllSoundsActionItem(GraphSourceItem instruction) {
@@ -28,7 +28,9 @@ public class StopDragActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("stopDrag()");
writer.append("stopDrag");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public StopDragActionItem(GraphSourceItem instruction) {
@@ -31,7 +31,9 @@ public class StrictModeActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("StrictMode(" + mode + ");"); //I still don't know how AS source of Strict Mode instruction looks like, assuming this...
writer.append("StrictMode");
writer.spaceBeforeCallParenthesies(0);
return writer.append("(" + mode + ");"); //I still don't know how AS source of Strict Mode instruction looks like, assuming this...
}
@Override
@@ -42,7 +42,9 @@ public class StringExtractActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
value.toString(writer, localData);
writer.append(".substr(");
writer.append(".substr");
writer.spaceBeforeCallParenthesies(2);
writer.append("(");
index.toString(writer, localData);
writer.append(",");
count.toString(writer, localData);
@@ -36,7 +36,9 @@ public class StringLengthActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("length(");
writer.append("length");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class TargetPathActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("targetPath(");
writer.append("targetPath");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class ToIntegerActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("int(");
writer.append("int");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class ToNumberActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("Number(");
writer.append("Number");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -35,7 +35,9 @@ public class ToStringActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("String(");
writer.append("String");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -28,7 +28,9 @@ public class ToggleHighQualityActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
return writer.append("toggleHighQuality()");
writer.append("toggleHighQuality");
writer.spaceBeforeCallParenthesies(0);
return writer.append("()");
}
public ToggleHighQualityActionItem(GraphSourceItem instruction) {
@@ -35,7 +35,9 @@ public class TraceActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("trace(");
writer.append("trace");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -38,7 +38,9 @@ public class TypeOfActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("typeof(");
writer.append("typeof");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
value.toString(writer, localData);
return writer.append(")");
}
@@ -49,7 +49,9 @@ public class UnLoadMovieActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("unloadMovie(");
writer.append("unloadMovie");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
targetString.toString(writer, localData);
return writer.append(")");
}
@@ -51,7 +51,9 @@ public class UnLoadMovieNumActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("unloadMovieNum(");
writer.append("unloadMovieNum");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
num.toString(writer, localData);
return writer.append(")");
}
@@ -81,7 +81,11 @@ public class ForInActionItem extends LoopActionItem implements Block {
if (labelUsed) {
writer.append("loop" + loop.id + ":").newLine();
}
writer.append("for(");
writer.append("for");
if (writer.getFormatting().spaceBeforeParenthesesForParentheses) {
writer.append(" ");
}
writer.append("(");
if ((variableName instanceof DirectValueActionItem) && (((DirectValueActionItem) variableName).value instanceof RegisterNumber)) {
writer.append("var ");
}
@@ -47,7 +47,9 @@ public class IfFrameLoadedActionItem extends ActionItem implements Block {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("ifFrameLoaded(");
writer.append("ifFrameLoaded");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
frame.toString(writer, localData);
writer.append(")").startBlock();
Graph.graphToString(actions, writer, localData);
@@ -42,7 +42,9 @@ public class TellTargetActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("tellTarget(");
writer.append("tellTarget");
writer.spaceBeforeCallParenthesies(1);
writer.append("(");
target.toString(writer, localData);
writer.append(")").newLine();
writer.append("{").newLine();
@@ -76,7 +76,11 @@ public class TryActionItem extends ActionItem implements Block {
writer.append("}");
for (int e = 0; e < catchExceptions.size(); e++) {
writer.newLine();
writer.append("catch(");
writer.append("catch");
if (writer.getFormatting().spaceBeforeParenthesesCatchParentheses) {
writer.append(" ");
}
writer.append("(");
catchExceptions.get(e).toStringNoQuotes(writer, localData);
writer.append(")").newLine();
writer.append("{").newLine();
@@ -48,7 +48,11 @@ public class WithActionItem extends ActionItem {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
writer.append("with(");
writer.append("with");
if (writer.getFormatting().spaceBeforeParenthesesWithParentheses) {
writer.append(" ");
}
writer.append("(");
scope.toString(writer, localData);
writer.append(")").newLine();
writer.append("{").newLine();
@@ -488,14 +488,25 @@ public class GenericTagTreePanel extends GenericTagPanel {
private final Object mtroot;
private final List<TreeModelListener> listeners = new ArrayList<>();
private final Map<String, Object> nodeCache = new HashMap<>();
// it is much faster to store the reverse mappings, too
private final Map<Object, String> nodeCacheReverse = new HashMap<>();
private Object getNodeByPath(String path) {
if (nodeCache.containsKey(path)) {
return nodeCache.get(path);
}
return null;
}
public String getNodePathName(Object find) {
if (nodeCacheReverse.containsKey(find)) {
return nodeCacheReverse.get(find);
}
return null;
}
public List<FieldNode> getDependentFields(FieldNode fnode) {
List<FieldNode> ret = new ArrayList<>();
getDependentFields(getNodePathName(fnode), mtroot.getClass().getSimpleName(), mtroot, ret);
@@ -522,22 +533,13 @@ public class GenericTagTreePanel extends GenericTagPanel {
}
}
}
for (int i = 0; i < getChildCount(node); i++) {
int count = getChildCount(node);
for (int i = 0; i < count; i++) {
FieldNode f = (FieldNode) getChild(node, i);
getDependentFields(dependence, currentPath + "." + f.getName(), f, ret);
}
}
public String getNodePathName(Object find) {
for (Map.Entry<String, Object> en : nodeCache.entrySet()) {
if (en.getValue().equals(find)) {
return en.getKey();
}
}
return null;
}
public MyTreeModel(Tag root) {
super(new DefaultMutableTreeNode(root));
this.mtroot = root;
@@ -555,7 +557,9 @@ public class GenericTagTreePanel extends GenericTagPanel {
parentPath += obj.getClass().getSimpleName();
}
nodeCache.put(parentPath, obj);
for (int i = 0; i < getChildCount(obj, false); i++) {
nodeCacheReverse.put(obj, parentPath);
int count = getChildCount(obj, false);
for (int i = 0; i < count; i++) {
buildCache(getChild(obj, i, false), parentPath);
}
}
@@ -597,7 +601,16 @@ public class GenericTagTreePanel extends GenericTagPanel {
return 0;
}
Field field = fnode.field;
if (ReflectionTools.needsIndex(field) && (fnode.index == -1)) { //Arrays ot Lists
if (ReflectionTools.needsIndex(field) && (fnode.index == -1)) { //Arrays or Lists
try {
if (field.get(fnode.obj) == null) {
// todo: instanciate the (Array)List or Array to allow adding items to it
return 0;
}
} catch (IllegalArgumentException | IllegalAccessException ex) {
return 0;
}
return ReflectionTools.getFieldSubSize(fnode.obj, field);
}
parent = fnode.getValue();
@@ -25,4 +25,29 @@ public class CodeFormatting {
public String newLineChars = "\r\n";
public String indentString = " ";
public boolean beginBlockOnNewLine = true;
// spaces
// before parentheses
public boolean spaceBeforeParenthesesMethodCallParentheses = false;
public boolean spaceBeforeParenthesesMethodCallEmptyParentheses = false;
public boolean spaceBeforeArrayAccessBrackets = false;
public boolean spaceBeforeParenthesesMethodDeclarationParentheses = false;
public boolean spaceBeforeParenthesesMethodDeclarationEmptyParentheses = false;
public boolean spaceBeforeParenthesesIfParentheses = false;
public boolean spaceBeforeParenthesesWithParentheses = false;
public boolean spaceBeforeParenthesesWhileParentheses = false;
public boolean spaceBeforeParenthesesCatchParentheses = false;
public boolean spaceBeforeParenthesesSwitchParentheses = false;
public boolean spaceBeforeParenthesesForParentheses = false;
public boolean spaceBeforeParenthesesForEachParentheses = false;
// around operators
public boolean spaceAroundOperatorsAssignmentOperators = false; // =, +=,...
public boolean spaceAroundOperatorsLogicalOperators = false; // &&, ||
public boolean spaceAroundOperatorsEqualityOperators = false; // ==, !=
public boolean spaceAroundOperatorsRelationalOperator = false; // <, >, <=, >=
public boolean spaceAroundOperatorsBitwiseOperator = false; // &, |, ^
public boolean spaceAroundOperatorsAdditiveOperator = false; // +, -
public boolean spaceAroundOperatorsMultiplicativeOperator = false; // *, /, %
public boolean spaceAroundOperatorsShiftOperator = false; // <<, >>
}
@@ -23,7 +23,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
*
* @author JPEXS
*/
public class GraphTextWriter {
public abstract class GraphTextWriter {
protected long startTime;
protected long suspendTime;
@@ -111,21 +111,13 @@ public class GraphTextWriter {
return "";
}
public GraphTextWriter append(String str) {
return this;
}
public abstract GraphTextWriter append(String str);
public GraphTextWriter append(String str, long offset) {
return this;
}
public abstract GraphTextWriter append(String str, long offset);
public GraphTextWriter appendNoHilight(int i) {
return this;
}
public abstract GraphTextWriter appendNoHilight(int i);
public GraphTextWriter appendNoHilight(String str) {
return this;
}
public abstract GraphTextWriter appendNoHilight(String str);
public GraphTextWriter indent() {
return this;
@@ -139,10 +131,6 @@ public class GraphTextWriter {
return this;
}
public GraphTextWriter stripSemicolon() {
return this;
}
public int getLength() {
return 0;
}
@@ -185,4 +173,21 @@ public class GraphTextWriter {
public GraphTextWriter endBlock() {
return endBlock("}");
}
public GraphTextWriter space() {
return append(" ");
}
public GraphTextWriter spaceBeforeCallParenthesies(int argCount) {
if (argCount > 0) {
if (formatting.spaceBeforeParenthesesMethodCallParentheses) {
space();
}
} else {
if (formatting.spaceBeforeParenthesesMethodCallEmptyParentheses) {
space();
}
}
return this;
}
}
@@ -222,17 +222,6 @@ public class HilightedTextWriter extends GraphTextWriter {
return this;
}
@Override
public HilightedTextWriter stripSemicolon() {
// hack
if (sb.charAt(sb.length() - 1) == ';') {
// todo: remove later
// probably this code branch is not executed anymore
sb.append("TODO_REMOVE_SEMICOLON");
}
return this;
}
@Override
public int getLength() {
return sb.length();
@@ -65,14 +65,17 @@ public class DoWhileItem extends LoopItem implements Block {
}
writer.append("do");
writer.startBlock();
writer.indent();
for (GraphTargetItem ti : commands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).newLine();
}
}
writer.endBlock();
writer.append("while(");
writer.endBlock().newLine();
writer.append("while");
if (writer.getFormatting().spaceBeforeParenthesesWhileParentheses) {
writer.append(" ");
}
writer.append("(");
for (int i = 0; i < expression.size(); i++) {
if (expression.get(i).isEmpty()) {
@@ -68,7 +68,11 @@ public class ForItem extends LoopItem implements Block {
if (labelUsed) {
writer.append("loop" + loop.id + ":").newLine();
}
writer.append("for(");
writer.append("for");
if (writer.getFormatting().spaceBeforeParenthesesForParentheses) {
writer.append(" ");
}
writer.append("(");
int p = 0;
for (int i = 0; i < firstCommands.size(); i++) {
if (firstCommands.get(i).isEmpty()) {
@@ -79,7 +83,6 @@ public class ForItem extends LoopItem implements Block {
writer.append(",");
}
firstCommands.get(i).toString(writer, localData);
writer.stripSemicolon();
p++;
}
writer.append(";");
@@ -94,7 +97,6 @@ public class ForItem extends LoopItem implements Block {
writer.append(",");
}
finalCommands.get(i).toString(writer, localData);
writer.stripSemicolon();
p++;
}
writer.append(")").startBlock();
@@ -81,7 +81,11 @@ public class IfItem extends GraphTargetItem implements Block {
elseBranch = onTrue;
}
}
writer.append("if(");
writer.append("if");
if (writer.getFormatting().spaceBeforeParenthesesIfParentheses) {
writer.append(" ");
}
writer.append("(");
expr.toString(writer, localData);
writer.append(")").startBlock();
for (GraphTargetItem ti : ifBranch) {
@@ -91,18 +95,26 @@ public class IfItem extends GraphTargetItem implements Block {
}
writer.endBlock();
if (elseBranch.size() > 0) {
boolean elseIf = elseBranch.size() == 1 && (elseBranch.get(0) instanceof IfItem);
if (writer.getFormatting().beginBlockOnNewLine) {
writer.newLine();
} else {
writer.append(" ");
}
writer.append("else").startBlock();
writer.append("else");
if (!elseIf) {
writer.startBlock();
} else {
writer.append(" ");
}
for (GraphTargetItem ti : elseBranch) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).newLine();
}
}
writer.endBlock();
if (!elseIf) {
writer.endBlock();
}
}
return writer;
}
@@ -70,7 +70,11 @@ public class SwitchItem extends LoopItem implements Block {
if (labelUsed) {
writer.append("loopswitch" + loop.id + ":").newLine();
}
writer.append("switch(");
writer.append("switch");
if (writer.getFormatting().spaceBeforeParenthesesSwitchParentheses) {
writer.append(" ");
}
writer.append("(");
switchedObject.toString(writer, localData);
writer.append(")").startBlock();
for (int i = 0; i < caseCommands.size(); i++) {
@@ -53,7 +53,11 @@ public class UniversalLoopItem extends LoopItem implements Block {
if (labelUsed) {
writer.append("loop" + loop.id + ":").newLine();
}
writer.append("while(true)").startBlock();
writer.append("while").startBlock();
if (writer.getFormatting().spaceBeforeParenthesesWhileParentheses) {
writer.append(" ");
}
writer.append("(true)").startBlock();
for (GraphTargetItem ti : commands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).newLine();
@@ -58,7 +58,11 @@ public class WhileItem extends LoopItem implements Block {
if (labelUsed) {
writer.append("loop" + loop.id + ":").newLine();
}
writer.append("while(");
writer.append("while");
if (writer.getFormatting().spaceBeforeParenthesesWhileParentheses) {
writer.append(" ");
}
writer.append("(");
for (int i = 0; i < expression.size(); i++) {
if (expression.get(i).isEmpty()) {
continue;