/******************************************************************************* * Copyright (c) 2010 Association for Decentralized Information Management in * Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.databoard.util.binary; import java.io.IOException; import java.nio.ByteBuffer; /** * IWriteable implementation with ByteBuffer as backend * * @author Toni Kalajainen (toni.kalajainen@vtt.fi) */ public class ByteBufferWriteable implements BinaryWriteable { ByteBuffer buf; public ByteBufferWriteable(ByteBuffer buf) { if (buf == null) throw new IllegalArgumentException("null"); this.buf = buf; } @Override public void write(int b) { buf.put((byte) b); } @Override public void writeByte(int b) throws IOException { buf.put((byte) b); } @Override public void writeBoolean(boolean v) throws IOException { buf.put( (byte) (v ? 1 : 0) ); } @Override public void writeFully(ByteBuffer src) { buf.put(src); } @Override public void writeFully(ByteBuffer src, int length) { if (src.hasArray()) { byte[] array = src.array(); buf.put(array, src.arrayOffset() + src.position(), length); } else { for (int i=0; i=Integer.MAX_VALUE || newPosition<0) throw new IllegalArgumentException("index out of range"); buf.position((int) newPosition); } }