org.armedbear.lisp.CharHashMap Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of abcl Show documentation
Show all versions of abcl Show documentation
Common Lisp implementation running on the JVM
package org.armedbear.lisp;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class CharHashMap {
final public T[] constants;
final public T NULL;
final static int CACHE_SIZE = 256;
final HashMap backing;
@SuppressWarnings("unchecked")
public CharHashMap(Class componentType, T def) {
NULL = def;
constants = (T[]) Array.newInstance(componentType, CACHE_SIZE);
Arrays.fill(constants, NULL);
backing = new HashMap();
}
@Override
public Object clone() {
CharHashMap n = new CharHashMap(constants.getClass().getComponentType(),NULL);
System.arraycopy(constants,0, n.constants,0,CACHE_SIZE);
n.backing.putAll(backing);
return n;
}
public T get(char key) {
if (key getCharIterator() {
return new Iterator() {
final Iterator carIt = backing.keySet().iterator();
int charNum = -1;
public boolean hasNext() {
if ( charNum