Path: blob/master/src/java.base/share/classes/jdk/internal/reflect/ByteVectorImpl.java
41159 views
/*1* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425package jdk.internal.reflect;2627class ByteVectorImpl implements ByteVector {28private byte[] data;29private int pos;3031public ByteVectorImpl() {32this(100);33}3435public ByteVectorImpl(int sz) {36data = new byte[sz];37pos = -1;38}3940public int getLength() {41return pos + 1;42}4344public byte get(int index) {45if (index >= data.length) {46resize(index);47pos = index;48}49return data[index];50}5152public void put(int index, byte value) {53if (index >= data.length) {54resize(index);55pos = index;56}57data[index] = value;58}5960public void add(byte value) {61if (++pos >= data.length) {62resize(pos);63}64data[pos] = value;65}6667public void trim() {68if (pos != data.length - 1) {69byte[] newData = new byte[pos + 1];70System.arraycopy(data, 0, newData, 0, pos + 1);71data = newData;72}73}7475public byte[] getData() {76return data;77}7879private void resize(int minSize) {80if (minSize <= 2 * data.length) {81minSize = 2 * data.length;82}83byte[] newData = new byte[minSize];84System.arraycopy(data, 0, newData, 0, data.length);85data = newData;86}87}888990