blob: d4df4d7af4f902ef3dc9b478350a796f0db7b705 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.tools.nls;
public class IntegerMap {
private static final int DEFAULT = 0;
private static final int GROW_SIZE = 10;
private int[] keys;
private int[] values;
public IntegerMap(int size) {
super();
keys = new int[size];
values = new int[size];
}
public int get(int key) {
for (int i = 0; i < keys.length; i++) {
int current = keys[i];
if (current != 0 && current == key)
return values[i];
}
return DEFAULT;
}
public void put(int key, int value) {
// replace if exists
int emptySlot = -1;
for (int i = 0; i < keys.length; i++) {
int current = keys[i];
if (current == 0) {
emptySlot = i;
continue;
} else if (current == key) {
values[i] = value;
return;
}
}
// grow if needed, then fill the empty slot
if (emptySlot == -1)
emptySlot = grow();
keys[emptySlot] = key;
values[emptySlot] = value;
}
private int grow() {
int size = keys.length;
int[] tempKeys = new int[size + GROW_SIZE];
System.arraycopy(keys, 0, tempKeys, 0, size);
keys = tempKeys;
int[] tempValues = new int[size + GROW_SIZE];
System.arraycopy(values, 0, tempValues, 0, size);
values = tempValues;
return size;
}
}