| Index: tools/immic/lib/src/resources/java/immi/ListPatch.java
|
| diff --git a/tools/immic/lib/src/resources/java/immi/ListPatch.java b/tools/immic/lib/src/resources/java/immi/ListPatch.java
|
| deleted file mode 100644
|
| index 67504a0eb73cf6eab0f1ec40bdbba185ed4a17b4..0000000000000000000000000000000000000000
|
| --- a/tools/immic/lib/src/resources/java/immi/ListPatch.java
|
| +++ /dev/null
|
| @@ -1,214 +0,0 @@
|
| -// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE.md file.
|
| -
|
| -// Generated file. Do not edit.
|
| -
|
| -package immi;
|
| -
|
| -import java.util.ArrayList;
|
| -import java.util.Collections;
|
| -import java.util.List;
|
| -
|
| -import dartino.ListPatchData;
|
| -import dartino.ListRegionData;
|
| -import dartino.ListRegionDataList;
|
| -import dartino.NodeDataList;
|
| -import dartino.NodePatchDataList;
|
| -
|
| -public final class ListPatch<N extends Node> implements Patch {
|
| -
|
| - // Public interface.
|
| -
|
| - @Override
|
| - public boolean hasChanged() { return changed; }
|
| -
|
| - public List<N> getCurrent() { return current; }
|
| - public List<N> getPrevious() { return previous; }
|
| -
|
| - public List<RegionPatch> getRegions() { return regions; }
|
| -
|
| - public static abstract class RegionPatch {
|
| - public int getIndex() { return index; }
|
| - public abstract int getCount();
|
| - public boolean isRemove() { return false; }
|
| - public boolean isInsert() { return false; }
|
| - public boolean isUpdate() { return false; }
|
| -
|
| - RegionPatch(int index) {
|
| - this.index = index;
|
| - }
|
| -
|
| - static RegionPatch fromData(
|
| - ListRegionData data,
|
| - Type type,
|
| - List<Node> previous,
|
| - ImmiRoot root) {
|
| - if (data.isRemove()) return new RemovePatch(data);
|
| - if (data.isInsert()) return new InsertPatch(data, type, root);
|
| - assert data.isUpdate();
|
| - return new UpdatePatch(data, type, previous, root);
|
| - }
|
| -
|
| - // Returns the change in size resulting from this region patch.
|
| - abstract int delta();
|
| -
|
| - // Applies a region patch to the output list and returns the index increment
|
| - // of the input list.
|
| - abstract int apply(List<Node> output);
|
| -
|
| - private int index;
|
| - }
|
| -
|
| - public static class RemovePatch extends RegionPatch {
|
| - @Override public int getCount() { return count; }
|
| - @Override public boolean isRemove() { return false; }
|
| -
|
| - int delta() { return -count; }
|
| -
|
| - int apply(List<Node> output) { return count; }
|
| -
|
| - private RemovePatch(ListRegionData data) {
|
| - super(data.getIndex());
|
| - count = data.getRemove();
|
| - }
|
| -
|
| - private int count;
|
| - }
|
| -
|
| - public static class InsertPatch extends RegionPatch {
|
| - @Override public int getCount() { return nodes.size(); }
|
| - @Override public boolean isInsert() { return true; }
|
| -
|
| - public List<Node> getNodes() { return nodes; }
|
| -
|
| - int delta() { return nodes.size(); }
|
| -
|
| - int apply(List<Node> output) {
|
| - output.addAll(nodes);
|
| - return 0;
|
| - }
|
| -
|
| - private InsertPatch(ListRegionData data, Type type, ImmiRoot root) {
|
| - super(data.getIndex());
|
| - NodeDataList insertData = data.getInsert();
|
| - int length = insertData.size();
|
| - List<Node> mutableNodes = new ArrayList<Node>(length);
|
| - if (type == Type.ANY_NODE) {
|
| - for (int i = 0; i < length; ++i) {
|
| - mutableNodes.add(new AnyNode(insertData.get(i), root));
|
| - }
|
| - } else {
|
| - assert type == Type.SPECIFIC_NODE;
|
| - for (int i = 0; i < length; ++i) {
|
| - mutableNodes.add(AnyNode.fromData(insertData.get(i), root));
|
| - }
|
| - }
|
| - nodes = Collections.unmodifiableList(mutableNodes);
|
| - }
|
| -
|
| - private List<Node> nodes;
|
| - }
|
| -
|
| - public static class UpdatePatch extends RegionPatch {
|
| - @Override public int getCount() { return updates.size(); }
|
| - @Override public boolean isUpdate() { return true; }
|
| -
|
| - public List<NodePatch> getUpdates() { return updates; }
|
| -
|
| - int delta() { return 0; }
|
| -
|
| - int apply(List<Node> output) {
|
| - int length = updates.size();
|
| - for (int i = 0; i < length; ++i) {
|
| - output.add(updates.get(i).getCurrent());
|
| - }
|
| - return length;
|
| - }
|
| -
|
| - private UpdatePatch(
|
| - ListRegionData data,
|
| - Type type,
|
| - List<Node> previous,
|
| - ImmiRoot root) {
|
| - super(data.getIndex());
|
| - NodePatchDataList updateData = data.getUpdate();
|
| - int length = updateData.size();
|
| - List<NodePatch> mutableUpdates = new ArrayList<NodePatch>(length);
|
| - if (type == Type.ANY_NODE) {
|
| - for (int i = 0; i < length; ++i) {
|
| - mutableUpdates.add(new AnyNodePatch(
|
| - updateData.get(i), (AnyNode)previous.get(getIndex() + i), root));
|
| - }
|
| - } else {
|
| - assert type == Type.SPECIFIC_NODE;
|
| - for (int i = 0; i < length; ++i) {
|
| - mutableUpdates.add(AnyNodePatch.fromData(
|
| - updateData.get(i), previous.get(getIndex() + i), root));
|
| - }
|
| - }
|
| - updates = Collections.unmodifiableList(mutableUpdates);
|
| - }
|
| -
|
| - private List<NodePatch> updates;
|
| - }
|
| -
|
| - // Package private implementation.
|
| -
|
| - ListPatch(List<N> previous) {
|
| - changed = false;
|
| - this.previous = previous;
|
| - current = previous;
|
| - }
|
| -
|
| - ListPatch(ListPatchData data, List<N> previous, ImmiRoot root) {
|
| - changed = true;
|
| - this.previous = previous;
|
| - Type type = Type.fromInt(data.getType());
|
| - ListRegionDataList regions = data.getRegions();
|
| - List<RegionPatch> patches = new ArrayList<RegionPatch>(regions.size());
|
| - for (int i = 0; i < regions.size(); ++i) {
|
| - // TODO(zerny): Separate ListPatch<AnyNode> from ListPatch<Node> and avoid
|
| - // dynamic casts.
|
| - patches.add(RegionPatch.fromData(
|
| - regions.get(i), type, (List<Node>)previous, root));
|
| - }
|
| - this.regions = patches;
|
| - this.current = applyWith(previous);
|
| - }
|
| -
|
| - List<N> applyWith(List<N> previous) {
|
| - int newSize = previous.size();
|
| - for (int i = 0; i < regions.size(); ++i) {
|
| - newSize += regions.get(i).delta();
|
| - }
|
| - int sourceIndex = 0;
|
| - List<N> newArray = new ArrayList<N>(newSize);
|
| - for (int i = 0; i < regions.size(); ++i) {
|
| - RegionPatch patch = regions.get(i);
|
| - while (sourceIndex < patch.index) {
|
| - newArray.add(previous.get(sourceIndex++));
|
| - }
|
| - // TODO(zerny): Separate ListPatch<AnyNode> from ListPatch<Node> and avoid
|
| - // dynamic casts.
|
| - sourceIndex += patch.apply((List<Node>)newArray);
|
| - }
|
| - while (sourceIndex < previous.size()) {
|
| - newArray.add(previous.get(sourceIndex++));
|
| - }
|
| - return Collections.unmodifiableList(newArray);
|
| - }
|
| -
|
| - private enum Type {
|
| - ANY_NODE, SPECIFIC_NODE;
|
| -
|
| - public static Type fromInt(int tag) {
|
| - return tag == 0 ? ANY_NODE : SPECIFIC_NODE;
|
| - }
|
| - }
|
| -
|
| - private boolean changed;
|
| - private List<N> previous;
|
| - private List<N> current;
|
| - private List<RegionPatch> regions;
|
| -}
|
|
|