diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionList.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionList.java index 734f1c128..4f0b3aacd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionList.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionList.java @@ -57,12 +57,12 @@ public class FastActionList implements Collection { getJumps(actions, actionItemMap); } - final ActionItem insertItemAfter(ActionItem item, Action action) { + public final ActionItem insertItemAfter(ActionItem item, Action action) { ActionItem newItem = new ActionItem(action); return insertItemAfter(item, newItem); } - final ActionItem insertItemBefore(ActionItem item, ActionItem newItem) { + public final ActionItem insertItemBefore(ActionItem item, ActionItem newItem) { insertItemAfter(item.prev, newItem); if (item == firstItem) { firstItem = newItem; @@ -71,7 +71,7 @@ public class FastActionList implements Collection { return newItem; } - final ActionItem insertItemAfter(ActionItem item, ActionItem newItem) { + public final ActionItem insertItemAfter(ActionItem item, ActionItem newItem) { if (item == null && firstItem == null) { firstItem = newItem; newItem.next = newItem; @@ -95,7 +95,7 @@ public class FastActionList implements Collection { return newItem; } - ActionItem removeItem(ActionItem item) { + public ActionItem removeItem(ActionItem item) { ActionItem next = null; if (item == firstItem) { if (item.next == item) { @@ -135,6 +135,19 @@ public class FastActionList implements Collection { return next; } + public void removeItem(int index, int count) { + FastActionListIterator iterator = new FastActionListIterator(this, index); + for (int i = 0; i < count; i++) { + iterator.next(); + iterator.remove(); + } + } + + public ActionItem get(int index) { + FastActionListIterator iterator = new FastActionListIterator(this, index); + return iterator.next(); + } + public void replaceJumpTargets(ActionItem target, ActionItem newTarget) { if (target.jumpsHere != null) { for (ActionItem item : new ArrayList<>(target.jumpsHere)) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionListIterator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionListIterator.java index 8fac86e05..f8f05aaae 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionListIterator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/fastactionlist/FastActionListIterator.java @@ -23,7 +23,7 @@ import java.util.Iterator; * * @author JPEXS */ -public class FastActionListIterator implements Iterator { +public final class FastActionListIterator implements Iterator { private ActionItem item; @@ -36,6 +36,18 @@ public class FastActionListIterator implements Iterator { this.list = list; } + FastActionListIterator(FastActionList list, int index) { + item = list.first(); + this.list = list; + for (int i = 0; i < index; i++) { + if (!hasNext()) { + throw new Error("Invalid index"); + } + + next(); + } + } + @Override public boolean hasNext() { return item != null && (!started || item != list.first());