package senseiTests.randomCounter.corba;
import java.util.BitSet;
import java.util.Random;
/**
* Class implementing a set of numbers
*/
class SetNumbers
{
public int getRandom()
{
return random.nextInt(MAX_NUMBERS);
}
/**
* Returns the first free number after the number specified
* as parameter. If there are none free, it just clears the
* content, giving again the same numbers
*/
public int getFreeNumber(int seed)
{
if (seed>MAX_NUMBERS) seed=0; //not a great check!
for (int i=seed;i<MAX_NUMBERS;i++)
{
if (setFreeNumber(i))
{
return i;
}
}
for (int i=0;i<seed;i++)
{
if (setFreeNumber(i))
{
return i;
}
}
System.out.println("SET is full, clearing it ...");
set.clear();
return getFreeNumber(seed);
}
boolean setFreeNumber(int pos)
{
if (set.get(pos))
{
return false;
}
set.set(pos);
return true;
}
BitSet set = new BitSet(MAX_NUMBERS);
Random random = new Random();
static int MAX_NUMBERS=5;
static
{
System.out.println("Sets use up to " + MAX_NUMBERS + " numbers");
if (MAX_NUMBERS<1)
{
System.err.println("The set cannot be empty!!");
System.exit(0);
}
}
}