Mercurial > hg4j
annotate src/org/tmatesoft/hg/internal/IntSliceSeq.java @ 713:661e77dc88ba tip
Mac support: respect Mac alternatives of command-line arguments for common unix tools
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Sun, 03 Aug 2014 18:09:00 +0200 | 
| parents | 58a6900f845d | 
| children | 
| rev | line source | 
|---|---|
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
2 * Copyright (c) 2013 TMate Software Ltd | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
3 * | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
7 * | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
12 * | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
14 * the terms of a license other than GNU General Public License | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
17 package org.tmatesoft.hg.internal; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
19 import java.util.Iterator; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
20 import java.util.NoSuchElementException; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
21 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
22 /** | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
23 * | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
24 * @author Artem Tikhomirov | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
25 * @author TMate Software Ltd. | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
26 */ | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
27 public final class IntSliceSeq implements Iterable<IntTuple>, Cloneable { | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
28 private final IntVector slices; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
29 private final int slice; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
30 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
31 public IntSliceSeq(int sliceSize) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
32 // initial size/grow values are pure guess | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
33 this(sliceSize, 10, 5); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
34 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
36 public IntSliceSeq(int sliceSize, int initialSlices, int slicesToGrow) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
37 slices = new IntVector(sliceSize * initialSlices, sliceSize*slicesToGrow); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
38 slice = sliceSize; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
39 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
40 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
41 public IntSliceSeq add(int... values) { | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
42 checkValuesAny(values); | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
43 slices.add(values); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
44 return this; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
45 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
46 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
47 public IntSliceSeq set(int sliceIndex, int... values) { | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
48 checkValuesExact(values); | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
49 for (int i = 0, j = sliceIndex*slice; i < slice; i++,j++) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
50 slices.set(j, values[i]); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
51 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
52 return this; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
53 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
54 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
55 public IntTuple get(int sliceIndex) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
56 checkArgRange(size(), sliceIndex); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
57 return new IntTuple(slice).set(slices, sliceIndex*slice); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
58 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
59 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
60 public int get(int sliceIndex, int valueIndex) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
61 checkArgRange(size(), sliceIndex); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
62 checkArgRange(slice, valueIndex); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
63 return slices.get(sliceIndex*slice + valueIndex); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
64 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
65 | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
66 public void addAll(IntSliceSeq other) { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
67 if (other.slice != this.slice) { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
68 throw new IllegalArgumentException(String.format("Tuple size doesn't match: %d and %d", slice, other.slice)); | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
69 } | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
70 slices.addAll(other.slices); | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
71 } | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
72 | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
73 public int size() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
74 return slices.size() / slice; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
75 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
76 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
77 public int sliceSize() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
78 return slice; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
79 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
80 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
81 public void clear() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
82 slices.clear(); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
83 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
84 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
85 public IntTuple last() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
86 int lastElementIndex = (size() - 1); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
87 if (lastElementIndex < 0) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
88 throw new NoSuchElementException(); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
89 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
90 return get(lastElementIndex); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
91 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
92 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
93 public Iterator<IntTuple> iterator() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
94 return new Iterator<IntTuple>() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
95 private final IntTuple t = new IntTuple(slice); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
96 private int next = 0; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
97 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
98 public boolean hasNext() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
99 return next < size(); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
100 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
101 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
102 public IntTuple next() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
103 return t.set(slices, next++*slice); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
104 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
105 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
106 public void remove() { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
107 throw new UnsupportedOperationException(); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
108 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
109 }; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
110 } | 
| 
679
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
111 | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
112 @Override | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
113 public String toString() { | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
114 StringBuilder sb = new StringBuilder(); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
115 for (int i = 0; i < size(); i++) { | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
116 sb.append('('); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
117 for (int j = 0; j < slice; j++) { | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
118 sb.append(slices.get(i*slice + j)); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
119 sb.append(','); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
120 } | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
121 sb.setLength(sb.length() - 1); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
122 sb.append(')'); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
123 sb.append(' '); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
124 } | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
125 return sb.toString(); | 
| 
 
19f5167c2155
HgParentChildMap: deduce common ancestor functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
674 
diff
changeset
 | 
126 } | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
127 | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
128 @Override | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
129 public IntSliceSeq clone() { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
130 try { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
131 return (IntSliceSeq) super.clone(); | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
132 } catch (CloneNotSupportedException ex) { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
133 throw new Error(ex); | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
134 } | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
135 } | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
136 | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
137 private void checkArgRange(int rangeSize, int index) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
138 if (index >= 0 && index < rangeSize) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
139 return; | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
140 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
141 throw new IllegalArgumentException(String.valueOf(index)); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
142 } | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
143 private void checkValuesExact(int[] values) { | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
144 if (values == null || values.length != slice) { | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
145 throw new IllegalArgumentException(String.valueOf(values == null ? values : values.length)); | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
146 } | 
| 
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
147 } | 
| 
680
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
148 private void checkValuesAny(int[] values) { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
149 if (values == null || values.length % slice != 0) { | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
150 throw new IllegalArgumentException(String.valueOf(values == null ? values : values.length)); | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
151 } | 
| 
 
58a6900f845d
Blame: alternative strategy to handle merge revisions: map(diff(p1->base->p2)) to understand merge intentions better
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
679 
diff
changeset
 | 
152 } | 
| 
674
 
cce0387c6041
Introduced dedicated IntSliceSeq/IntTuple in place of IntArray with subsequences
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
153 } | 
