package org.limewire.collection;
/**
* Provides a not view for a {@link BitField}.
* See <a
* href="http://en.wikipedia.org/wiki/Logical_NOR">not</a> for more
* information.
<pre>
void sampleCodeNotView(){
BitSet bs1 = new BitSet();
bs1.set(0);
bs1.set(1);
BitField bf1 = new BitFieldSet(bs1, 5);
printBitField(bf1, "bf1");
NotView nv = new NotView(bf1);
printBitField(nv, " nv");
}
void printBitField(BitField bf, String bfName){
System.out.print(bfName + ": ");
for(int i = 0; i < bf.maxSize(); i++){
int j = 0;
if(bf.get(i))
j = 1;
System.out.print(j);
}
System.out.println("");
}
Output:
bf1: 11000
nv: 00111
</pre>
*/
public class NotView implements BitField {
private final BitField bf;
public NotView(BitField bf) {
this.bf = bf;
}
public int cardinality() {
return bf.maxSize() - bf.cardinality();
}
public boolean get(int i) {
return !bf.get(i);
}
public int maxSize() {
return bf.maxSize();
}
public int nextClearBit(int i) {
return bf.nextSetBit(i);
}
public int nextSetBit(int i) {
return bf.nextClearBit(i);
}
}