下面列出了java.nio.IntBuffer#mark ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void compressChunk(
IntBuffer src,
IntOutputStream dst,
IntFilter filter)
{
src.mark();
filter.saveContext();
int head = 0;
for (int i = 0; i < this.blockNum; ++i) {
int n = this.maxBits[i] = countMaxBits(src, this.blockLen, filter);
head = (head << 8) | n;
}
filter.restoreContext();
src.reset();
dst.write(head);
for (int i = 0; i < this.blockNum; ++i) {
pack(src, dst, this.maxBits[i], this.blockLen, filter);
}
}
@Test
public void testBuffer() {
EventQueue queue = new EventQueue(new Keymap());
assertEquals(0, queue.getBuffer().capacity());
queue.append('h', 'e', 'l', 'l', 'o');
IntBuffer buffer = queue.getBuffer();
buffer.mark();
assertEquals(5, buffer.capacity());
assertEquals('h', buffer.get());
assertEquals('e', buffer.get());
assertEquals('l', buffer.get());
assertEquals('l', buffer.get());
assertEquals('o', buffer.get());
buffer.reset();
try {
buffer.put(0, 'p');
fail();
} catch (ReadOnlyBufferException ignore) {
}
}
@Test
public void testBuffer() {
EventQueue queue = new EventQueue(new Keymap());
assertEquals(0, queue.getBuffer().capacity());
queue.append('h', 'e', 'l', 'l', 'o');
IntBuffer buffer = queue.getBuffer();
buffer.mark();
assertEquals(5, buffer.capacity());
assertEquals('h', buffer.get());
assertEquals('e', buffer.get());
assertEquals('l', buffer.get());
assertEquals('l', buffer.get());
assertEquals('o', buffer.get());
buffer.reset();
try {
buffer.put(0, 'p');
fail();
} catch (ReadOnlyBufferException ignore) {
}
}
@Override
protected int decompressLength(IntBuffer src) {
src.mark();
final int outLen = (int)src.get();
src.reset();
return outLen;
}