/*******************************************************************************
* Copyright (c) 2004, 2010 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:
* Andrew Niefer (IBM Corporation) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.util;
import java.util.Collections;
import java.util.List;
public class CharArraySet extends CharTable {
public static final CharArraySet EMPTY_SET = new CharArraySet( 0 ){
@Override
public Object clone() { return this; }
@Override
public List<char[]> toList() { return Collections.emptyList(); }
@Override
public void put( char[] key ) { throw new UnsupportedOperationException(); }
@Override
public void addAll( List<char[]> list ) { throw new UnsupportedOperationException(); }
@Override
public void addAll( CharArraySet set ) { throw new UnsupportedOperationException(); }
};
public CharArraySet(int initialSize) {
super(initialSize);
}
public void put(char[] key ){
addIndex(key);
}
public void addAll( List<char[]> list ){
if( list == null )
return;
int size = list.size();
for( int i = 0; i < size; i++ ){
addIndex( list.get( i ) );
}
}
public void addAll( CharArraySet set ){
if( set == null )
return;
int size = set.size();
for( int i = 0; i < size; i++ ){
addIndex( set.keyAt( i ) );
}
}
final public boolean remove( char[] key ) {
int i = lookup(key);
if (i < 0)
return false;
removeEntry(i);
return true;
}
@Override
final public void clear(){
for( int i = 0; i < keyTable.length; i++ ){
keyTable[i] = null;
hashTable[ 2*i ] = 0;
hashTable[ 2*i + 1 ] = 0;
nextTable[i] = 0;
}
currEntry = -1;
}
}