?? bytebuffer.java
字號:
/** * @(#)ByteBuffer.java 1.13 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.tools.javac.v8.util;import java.io.*;/** * A byte buffer is a flexible array which grows when elements are * appended. There are also methods to append names to byte buffers * and to convert byte buffers to names. */public class ByteBuffer { /** * An array holding the bytes in this buffer; can be grown. */ public byte[] elems; /** * The current number of defined bytes in this buffer. */ public int length; /** * Create a new byte buffer. */ public ByteBuffer() { this(64); } /** * Create a new byte buffer with an initial elements array * of given size. */ public ByteBuffer(int initialSize) { super(); elems = new byte[initialSize]; length = 0; } private void copy(int size) { byte[] newelems = new byte[size]; System.arraycopy(elems, 0, newelems, 0, elems.length); elems = newelems; } /** * Append byte to this buffer. */ public void appendByte(int b) { if (length >= elems.length) copy(elems.length * 2); elems[length++] = (byte) b; } /** * Append `len' bytes from byte array, * starting at given `start' offset. */ public void appendBytes(byte[] bs, int start, int len) { while (length + len > elems.length) copy(elems.length * 2); System.arraycopy(bs, start, elems, length, len); length += len; } /** * Append all bytes from given byte array. */ public void appendBytes(byte[] bs) { appendBytes(bs, 0, bs.length); } /** * Append a character as a two byte number. */ public void appendChar(int x) { while (length + 1 >= elems.length) copy(elems.length * 2); elems[length] = (byte)((x >> 8) & 255); elems[length + 1] = (byte)((x) & 255); length = length + 2; } /** * Append an integer as a four byte number. */ public void appendInt(int x) { while (length + 3 >= elems.length) copy(elems.length * 2); elems[length] = (byte)((x >> 24) & 255); elems[length + 1] = (byte)((x >> 16) & 255); elems[length + 2] = (byte)((x >> 8) & 255); elems[length + 3] = (byte)((x) & 255); length = length + 4; } /** * Append a long as an eight byte number. */ public void appendLong(long x) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(8); DataOutputStream bufout = new DataOutputStream(buffer); try { bufout.writeLong(x); appendBytes(buffer.toByteArray(), 0, 8); } catch (IOException e) { throw new AssertionError("write"); } } /** * Append a float as a four byte number. */ public void appendFloat(float x) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(4); DataOutputStream bufout = new DataOutputStream(buffer); try { bufout.writeFloat(x); appendBytes(buffer.toByteArray(), 0, 4); } catch (IOException e) { throw new AssertionError("write"); } } /** * Append a double as a eight byte number. */ public void appendDouble(double x) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(8); DataOutputStream bufout = new DataOutputStream(buffer); try { bufout.writeDouble(x); appendBytes(buffer.toByteArray(), 0, 8); } catch (IOException e) { throw new AssertionError("write"); } } /** * Append a name. */ public void appendName(Name name) { appendBytes(name.table.names, name.index, name.len); } /** * Reset to zero length. */ public void reset() { length = 0; } /** * Convert contents to name. */ public Name toName(Name.Table names) { return names.fromUtf(elems, 0, length); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -