Mercurial > hg4j
annotate src/org/tmatesoft/hg/internal/IntVector.java @ 566:32453f30de07 v1.1m3
Annotate command with command-line example
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Tue, 09 Apr 2013 19:25:34 +0200 | 
| parents | d3c71498919c | 
| children | e49f9d9513fa | 
| rev | line source | 
|---|---|
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
545
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
2 * Copyright (c) 2011-2013 TMate Software Ltd | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
3 * | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
7 * | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
12 * | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
14 * the terms of a license other than GNU General Public License | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
17 package org.tmatesoft.hg.internal; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
561
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
19 import java.util.Arrays; | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
20 | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
21 /** | 
| 
328
 
a674b8590362
Move file tree history to upper API level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
288 
diff
changeset
 | 
22 * Vector of primitive values | 
| 
 
a674b8590362
Move file tree history to upper API level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
288 
diff
changeset
 | 
23 * | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
24 * @author Artem Tikhomirov | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
25 * @author TMate Software Ltd. | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
26 */ | 
| 
328
 
a674b8590362
Move file tree history to upper API level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
288 
diff
changeset
 | 
27 public class IntVector { | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
28 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
29 private int[] data; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
30 private final int increment; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
31 private int count; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
32 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
33 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
34 public IntVector() { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 this(16, -1); | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
36 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
37 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
38 // increment == -1: grow by power of two. | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
39 // increment == 0: no resize (Exception will be thrown on attempt to add past capacity) | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
40 public IntVector(int initialCapacity, int increment) { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
41 data = new int[initialCapacity]; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
42 this.increment = increment; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
43 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
44 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
45 public void add(int v) { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
46 if (count == data.length) { | 
| 
551
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
47 grow(0); | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
48 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
49 data[count++] = v; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
50 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
51 | 
| 
551
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
52 public void add(int... values) { | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
53 if (count + values.length > data.length) { | 
| 
552
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
54 grow(count + values.length); | 
| 
551
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
55 } | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
56 for (int v : values) { | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
57 data[count++] = v; | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
58 } | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
59 } | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
60 | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
61 public int get(int i) { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
62 if (i < 0 || i >= count) { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
63 throw new IndexOutOfBoundsException(String.format("Index: %d, size: %d", i, count)); | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
64 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
65 return data[i]; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
66 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
67 | 
| 
545
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
68 public void set(int i, int v) { | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
69 if (i < 0 || i >= count) { | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
70 throw new IndexOutOfBoundsException(String.format("Index: %d, size: %d", i, count)); | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
71 } | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
72 data[i] = v; | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
73 } | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
74 | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
75 public int size() { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
76 return count; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
77 } | 
| 
329
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
78 | 
| 
545
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
79 public boolean isEmpty() { | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
80 return count == 0; | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
81 } | 
| 
 
15b406c7cd9d
First round of annotate file is functional
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
329 
diff
changeset
 | 
82 | 
| 
329
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
83 public void clear() { | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
84 count = 0; | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
85 } | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
86 | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
87 public void trimToSize() { | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
88 data = toArray(true); | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
89 } | 
| 
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
90 | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
91 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
92 public int[] toArray() { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
93 int[] rv = new int[count]; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
94 System.arraycopy(data, 0, rv, 0, count); | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
95 return rv; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
96 } | 
| 
552
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
97 | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
98 public void reverse() { | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
99 for (int a = 0, b = count-1; a < b; a++, b--) { | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
100 int t = data[b]; | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
101 data[b] = data[a]; | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
102 data[a] = t; | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
103 } | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
104 } | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
105 | 
| 
561
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
106 /** | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
107 * | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
108 * @param ascending <code>true</code> to sort in ascending order, <code>false</code> for descending | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
109 */ | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
110 public void sort(boolean ascending) { | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
111 Arrays.sort(data, 0, count); | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
112 if (!ascending) { | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
113 reverse(); | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
114 } | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
115 } | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
116 | 
| 
 
d3c71498919c
Do not process child revisions before all possible parent paths were visited
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
552 
diff
changeset
 | 
117 | 
| 
552
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
118 @Override | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
119 public String toString() { | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
120 return String.format("%s[%d]", IntVector.class.getSimpleName(), size()); | 
| 
 
45751456b471
Annotate file changes through few revisions, walking either direction (old to new and vice versa)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
551 
diff
changeset
 | 
121 } | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
122 | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
123 /** | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
124 * Use only when this instance won't be used any longer | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
125 */ | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
126 @Experimental | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
127 int[] toArray(boolean internalIfSizeMatchCapacity) { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
128 if (count == data.length) { | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
129 return data; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
130 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
131 return toArray(); | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
132 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
133 | 
| 
551
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
134 private void grow(int newCapacityHint) { | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
135 if (increment == 0) { | 
| 
329
 
694ebabb5cb3
Refactor revlog patch mechanism, towards patch merging
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
328 
diff
changeset
 | 
136 throw new UnsupportedOperationException("This vector is not allowed to expand"); | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
137 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
138 int newCapacity = increment < 0 ? data.length << 1 : data.length + increment; | 
| 
551
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
139 if (newCapacityHint > 0 && newCapacity < newCapacityHint) { | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
140 newCapacity = newCapacityHint; | 
| 
 
4ea0351ca878
Better (precise) name for diff facility, tests
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
549 
diff
changeset
 | 
141 } | 
| 
288
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
142 assert newCapacity > 0 && newCapacity != data.length : newCapacity; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
143 int[] newData = new int[newCapacity]; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
144 System.arraycopy(data, 0, newData, 0, count); | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
145 data = newData; | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
146 } | 
| 
 
b11f6a08f748
Avoid boxing int values and list resizes on revlog read
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
147 } | 
