package org.das2.qds.buffer; import java.nio.ByteBuffer; import org.das2.qds.LongReadAccess; import org.das2.qds.WritableDataSet; public class LongDataSet extends BufferDataSet { public LongDataSet(int rank, int reclen, int recoffs, int len0, int len1, int len2, int len3, ByteBuffer back ) { super(rank, reclen, recoffs, len0, len1, len2, len3, LONG, back ); } @Override public double value() { return back.getLong(offset()); } @Override public double value(int i0) { return back.getLong(offset(i0)); } @Override public double value(int i0, int i1) { return back.getLong(offset(i0, i1)); } @Override public double value(int i0, int i1, int i2) { return back.getLong(offset(i0, i1, i2)); } @Override public double value(int i0, int i1, int i2, int i3) { return back.getLong(offset(i0, i1, i2, i3)); } @Override public void putValue(double d) { ensureWritable(); back.putLong( offset(), (long)d ); } @Override public void putValue(int i0, double d) { ensureWritable(); back.putLong( offset(i0), (long)d ); } @Override public void putValue(int i0, int i1, double d) { ensureWritable(); back.putLong( offset(i0, i1), (long)d ); } @Override public void putValue(int i0, int i1, int i2, double d) { ensureWritable(); back.putLong( offset(i0, i1, i2), (long)d ); } @Override public void putValue(int i0, int i1, int i2, int i3, double d) { ensureWritable(); back.putLong( offset(i0, i1, i2, i3), (long)d ); } /** * Clients should use this instead of * casting the class to the capability class. * @param * @param clazz the class, such as WritableDataSet.class * @return null or the capability if exists, such as WritableDataSet */ @Override public T capability(Class clazz) { if ( clazz==WritableDataSet.class ) { if ( isImmutable() ) { return null; } else { return (T) this; } } else if ( clazz==LongReadAccess.class ) { return clazz.cast( new LongDataSetLongReadAccess() ); } else { return super.capability(clazz); } } public class LongDataSetLongReadAccess implements LongReadAccess { @Override public long lvalue() { return back.getLong( offset() ); } @Override public long lvalue(int i0) { return back.getLong( offset(i0) ); } @Override public long lvalue(int i0, int i1) { return back.getLong( offset(i0, i1) ); } @Override public long lvalue(int i0, int i1, int i2) { return back.getLong( offset(i0, i1, i2) ); } @Override public long lvalue(int i0, int i1, int i2, int i3) { return back.getLong( offset(i0, i1, i2, i3) ); } } }