mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-29 18:34:42 +00:00
fast action list modifications
This commit is contained in:
@@ -57,12 +57,12 @@ public class FastActionList implements Collection<ActionItem> {
|
||||
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<ActionItem> {
|
||||
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<ActionItem> {
|
||||
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<ActionItem> {
|
||||
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)) {
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.util.Iterator;
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class FastActionListIterator implements Iterator<ActionItem> {
|
||||
public final class FastActionListIterator implements Iterator<ActionItem> {
|
||||
|
||||
private ActionItem item;
|
||||
|
||||
@@ -36,6 +36,18 @@ public class FastActionListIterator implements Iterator<ActionItem> {
|
||||
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());
|
||||
|
||||
Reference in New Issue
Block a user