Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /* Soot - a J*va Optimization Framework
  * Copyright (C) 2002 Ondrej Lhotak
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
package soot.util;
import java.util.*;

A class that numbers objects, so they can be placed in bitsets.

Author(s):
Ondrej Lhotak
xiao, generalize it.
public class ArrayNumberer<E> implements IterableNumberer<E> {
    Numberable[] numberToObj = new Numberable[1024];
    int lastNumber = 0;
    public void add( E oo ) {
        Numberable o = (Numberableoo;
        ifo.getNumber() != 0 ) return;
        
        ++;
        if >= . ) {
            Numberable[] newnto = new Numberable[.*2];
            System.arraycopy(, 0, newnto, 0, .);
             = newnto;
        }
        [] = o;
        o.setNumber );
    }
    public long get( E oo ) {
        ifoo == null ) return 0;
        Numberable o = (Numberableoo;
        int ret = o.getNumber();
        ifret == 0 ) throw new RuntimeException"unnumbered: "+o );
        return ret;
    }
	public E getlong number ) {
        ifnumber == 0 ) return null;
        E ret = (E) [(intnumber];
        ifret == null ) throw new RuntimeException"no object with number "+number );
        return ret;
    }
    public int size() { return ; }
    public Iterator<E> iterator() {
        return new NumbererIterator();
    }
    final class NumbererIterator implements Iterator<E> {
        int cur = 1;
        public final boolean hasNext() {
            return  < . && [] != null;
        }
		public final E next() { 
            if( !hasNext() ) throw new NoSuchElementException();
            return (E) [++];
        }
        public final void remove() {
            throw new UnsupportedOperationException();
        }
    }
New to GrepCode? Check out our FAQ X