public override LongBuffer Put(LongBuffer src) { if (src is DirectLongBufferU) { if (src == this) { throw new IllegalArgumentException(); } DirectLongBufferU sb = (DirectLongBufferU)src; int spos = sb.Position(); int slim = sb.Limit(); assert(spos <= slim); int srem = (spos <= slim ? slim - spos : 0); int pos = Position(); int lim = Limit(); assert(pos <= lim); int rem = (pos <= lim ? lim - pos : 0); if (srem > rem) { throw new BufferOverflowException(); } @unsafe.copyMemory(sb.Ix(spos), Ix(pos), (long)srem << 3); sb.Position(spos + srem); Position(pos + srem); } else if (src.Hb != null) { int spos = src.Position(); int slim = src.Limit(); assert(spos <= slim); int srem = (spos <= slim ? slim - spos : 0); Put(src.Hb, src.Offset + spos, srem); src.Position(spos + srem); } else { base.Put(src); } return(this); }
public override LongBuffer Put(LongBuffer src) { throw new ReadOnlyBufferException(); }