package water.fvec;
import water.*;
import java.util.Arrays;
import java.util.Iterator;
/** specialized subtype of SPARSE chunk for boolean (bitvector); no NAs. contains just a list of rows that are non-zero. */
public final class CX0Chunk extends CXIChunk {
// Sparse constructor
protected CX0Chunk(int len, int nzs, byte [] buf){super(len,nzs,0,buf);}
@Override protected final long at8_impl(int idx) {return getId(findOffset(idx)) == idx?1:0;}
@Override protected final double atd_impl(int idx) { return at8_impl(idx); }
@Override protected final boolean isNA_impl( int i ) { return false; }
@Override boolean hasFloat () { return false; }
@Override NewChunk inflate_impl(NewChunk nc) {
final int slen = sparseLen();
nc.set_sparseLen(slen);
nc.set_len(len());
nc.alloc_mantissa(slen);
Arrays.fill(nc.mantissa(),1);
nc.alloc_exponent(slen);
nc.alloc_indices(slen);
nonzeros(nc.indices());
return nc;
}
public Iterator<Value> values(){
return new SparseIterator(new Value(){
@Override public final long asLong(){return 1;}
@Override public final double asDouble() { return 1;}
@Override public final boolean isNA(){ return false;}
});
}
}