⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bytebuffer.java

📁 是一款用JAVA 编写的编译器 具有很强的编译功能
💻 JAVA
字号:
/* * Copyright 1999-2005 Sun Microsystems, Inc.  All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */package com.sun.tools.javac.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. * *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If *  you write code that depends on this, you do so at your own risk. *  This code and its internal interfaces are subject to change or *  deletion without notice.</b> */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) {	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) & 0xFF);        elems[length+1] = (byte)((x      ) & 0xFF);	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) & 0xFF);        elems[length+1] = (byte)((x >> 16) & 0xFF);	elems[length+2] = (byte)((x >>  8) & 0xFF);        elems[length+3] = (byte)((x      ) & 0xFF);	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 + -