comparison src/org/tmatesoft/hg/internal/IntMap.java @ 281:81e9a3c9bafe

Utilize IntMap when caching manifest revisions
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 02 Sep 2011 13:59:21 +0200
parents 55fad5e0e98b
children ee8264d80747 2e402c12ebc6
comparison
equal deleted inserted replaced
280:35125450c804 281:81e9a3c9bafe
107 if (ix >= 0) { 107 if (ix >= 0) {
108 return (V) values[ix]; 108 return (V) values[ix];
109 } 109 }
110 return null; 110 return null;
111 } 111 }
112
113 public void remove(int key) {
114 int ix = binarySearch(keys, size, key);
115 if (ix >= 0) {
116 if (ix <= size - 1) {
117 System.arraycopy(keys, ix+1, keys, ix, size - ix - 1);
118 System.arraycopy(values, ix+1, values, ix, size - ix - 1);
119 } // if ix points to last element, no reason to attempt a copy
120 size--;
121 keys[size] = 0;
122 values[size] = null;
123 }
124 }
125
126 /**
127 * Forget first N entries (in natural order) in the map.
128 */
129 @Experimental
130 public void removeFromStart(int count) {
131 if (count > 0 && count <= size) {
132 if (count < size) {
133 System.arraycopy(keys, count, keys, 0, size - count);
134 System.arraycopy(values, count, values, 0, size - count);
135 }
136 for (int i = size - count; i < size; i++) {
137 keys[i] = 0;
138 values[i] = null;
139 }
140 size -= count;
141 }
142 }
143
144
112 145
113 // copy of Arrays.binarySearch, with upper search limit as argument 146 // copy of Arrays.binarySearch, with upper search limit as argument
114 private static int binarySearch(int[] a, int high, int key) { 147 private static int binarySearch(int[] a, int high, int key) {
115 int low = 0; 148 int low = 0;
116 high--; 149 high--;