package water.fvec;
/**
* The empty-compression function, if all elements fit directly on UNSIGNED bytes.
* [In particular, this is the compression style for data read in from files.]
*/
public class C1NChunk extends Chunk {
protected static final int _OFF=0;
public C1NChunk(byte[] bs) { _mem=bs; _start = -1; set_len(_mem.length); }
@Override protected final long at8_impl( int i ) { return 0xFF&_mem[i]; }
@Override protected final double atd_impl( int i ) { return 0xFF&_mem[i]; }
@Override protected final boolean isNA_impl( int i ) { return false; }
@Override boolean set_impl(int i, long l ) { return false; }
@Override boolean set_impl(int i, double d) { return false; }
@Override boolean set_impl(int i, float f ) { return false; }
@Override boolean setNA_impl(int idx) { return false; }
// Custom serializers: the _mem field contains ALL the fields already.
// Init _start to -1, so we know we have not filled in other fields.
// Leave _vec & _chk2 null, leave _len unknown.
@Override protected final void initFromBytes () {
_start = -1;
_cidx = -1;
set_len(_mem.length);
}
@Override public boolean hasFloat() {return false;}
@Override public boolean hasNA() { return false; }
@Override public double [] getDoubles(double [] vals, int [] ids) {
int k = 0;
for (int i : ids) vals[k++] = _mem[i] & 0xFF;
return vals;
}
@Override public double [] getDoubles(double [] vals, int from, int to, double NA){
for(int i = from; i < to; ++i)
vals[i-from] = _mem[i]&0xFF;
return vals;
}
@Override
public <T extends ChunkVisitor> T processRows(T v, int from, int to) {
for(int i = from; i < to; i++) v.addValue(0xFF&_mem[i]);
return v;
}
@Override
public <T extends ChunkVisitor> T processRows(T v, int[] ids) {
for(int i:ids) v.addValue(0xFF&_mem[i]);
return v;
}
}