1.1 --- a/javap/src/main/java/org/apidesign/javap/TypeArray.java Tue Feb 26 14:55:55 2013 +0100
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,186 +0,0 @@
1.4 -/*
1.5 - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
1.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1.7 - *
1.8 - * This code is free software; you can redistribute it and/or modify it
1.9 - * under the terms of the GNU General Public License version 2 only, as
1.10 - * published by the Free Software Foundation. Oracle designates this
1.11 - * particular file as subject to the "Classpath" exception as provided
1.12 - * by Oracle in the LICENSE file that accompanied this code.
1.13 - *
1.14 - * This code is distributed in the hope that it will be useful, but WITHOUT
1.15 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1.16 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1.17 - * version 2 for more details (a copy is included in the LICENSE file that
1.18 - * accompanied this code).
1.19 - *
1.20 - * You should have received a copy of the GNU General Public License version
1.21 - * 2 along with this work; if not, write to the Free Software Foundation,
1.22 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1.23 - *
1.24 - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
1.25 - * or visit www.oracle.com if you need additional information or have any
1.26 - * questions.
1.27 - */
1.28 -
1.29 -package org.apidesign.javap;
1.30 -
1.31 -import static org.apidesign.javap.RuntimeConstants.ITEM_Bogus;
1.32 -import static org.apidesign.javap.RuntimeConstants.ITEM_Integer;
1.33 -import static org.apidesign.javap.RuntimeConstants.ITEM_Float;
1.34 -import static org.apidesign.javap.RuntimeConstants.ITEM_Double;
1.35 -import static org.apidesign.javap.RuntimeConstants.ITEM_Long;
1.36 -import static org.apidesign.javap.RuntimeConstants.ITEM_Null;
1.37 -import static org.apidesign.javap.RuntimeConstants.ITEM_InitObject;
1.38 -import static org.apidesign.javap.RuntimeConstants.ITEM_Object;
1.39 -import static org.apidesign.javap.RuntimeConstants.ITEM_NewObject;
1.40 -
1.41 -public final class TypeArray {
1.42 - private static final int CAPACITY_INCREMENT = 16;
1.43 -
1.44 - private int[] types;
1.45 - private int size;
1.46 -
1.47 - public TypeArray() {
1.48 - }
1.49 -
1.50 - public TypeArray(final TypeArray initialTypes) {
1.51 - setAll(initialTypes);
1.52 - }
1.53 -
1.54 - public void add(final int newType) {
1.55 - ensureCapacity(size + 1);
1.56 - types[size++] = newType;
1.57 - }
1.58 -
1.59 - public void addAll(final TypeArray newTypes) {
1.60 - addAll(newTypes.types, 0, newTypes.size);
1.61 - }
1.62 -
1.63 - public void addAll(final int[] newTypes) {
1.64 - addAll(newTypes, 0, newTypes.length);
1.65 - }
1.66 -
1.67 - public void addAll(final int[] newTypes,
1.68 - final int offset,
1.69 - final int count) {
1.70 - if (count > 0) {
1.71 - ensureCapacity(size + count);
1.72 - arraycopy(newTypes, offset, types, size, count);
1.73 - size += count;
1.74 - }
1.75 - }
1.76 -
1.77 - public void set(final int index, final int newType) {
1.78 - types[index] = newType;
1.79 - }
1.80 -
1.81 - public void setAll(final TypeArray newTypes) {
1.82 - setAll(newTypes.types, 0, newTypes.size);
1.83 - }
1.84 -
1.85 - public void setAll(final int[] newTypes) {
1.86 - setAll(newTypes, 0, newTypes.length);
1.87 - }
1.88 -
1.89 - public void setAll(final int[] newTypes,
1.90 - final int offset,
1.91 - final int count) {
1.92 - if (count > 0) {
1.93 - ensureCapacity(count);
1.94 - arraycopy(newTypes, offset, types, 0, count);
1.95 - size = count;
1.96 - } else {
1.97 - clear();
1.98 - }
1.99 - }
1.100 -
1.101 - public void setSize(final int newSize) {
1.102 - if (size != newSize) {
1.103 - ensureCapacity(newSize);
1.104 -
1.105 - for (int i = size; i < newSize; ++i) {
1.106 - types[i] = 0;
1.107 - }
1.108 - size = newSize;
1.109 - }
1.110 - }
1.111 -
1.112 - public void clear() {
1.113 - size = 0;
1.114 - }
1.115 -
1.116 - public int getSize() {
1.117 - return size;
1.118 - }
1.119 -
1.120 - public int get(final int index) {
1.121 - return types[index];
1.122 - }
1.123 -
1.124 - public static String typeString(final int type) {
1.125 - switch (type & 0xff) {
1.126 - case ITEM_Bogus:
1.127 - return "_top_";
1.128 - case ITEM_Integer:
1.129 - return "_int_";
1.130 - case ITEM_Float:
1.131 - return "_float_";
1.132 - case ITEM_Double:
1.133 - return "_double_";
1.134 - case ITEM_Long:
1.135 - return "_long_";
1.136 - case ITEM_Null:
1.137 - return "_null_";
1.138 - case ITEM_InitObject: // UninitializedThis
1.139 - return "_init_";
1.140 - case ITEM_Object:
1.141 - return "_object_";
1.142 - case ITEM_NewObject: // Uninitialized
1.143 - return "_new_";
1.144 - default:
1.145 - throw new IllegalArgumentException("Unknown type");
1.146 - }
1.147 - }
1.148 -
1.149 - @Override
1.150 - public String toString() {
1.151 - final StringBuilder sb = new StringBuilder("[");
1.152 - if (size > 0) {
1.153 - sb.append(typeString(types[0]));
1.154 - for (int i = 1; i < size; ++i) {
1.155 - sb.append(", ");
1.156 - sb.append(typeString(types[i]));
1.157 - }
1.158 - }
1.159 -
1.160 - return sb.append(']').toString();
1.161 - }
1.162 -
1.163 - private void ensureCapacity(final int minCapacity) {
1.164 - if ((minCapacity == 0)
1.165 - || (types != null) && (minCapacity <= types.length)) {
1.166 - return;
1.167 - }
1.168 -
1.169 - final int newCapacity =
1.170 - ((minCapacity + CAPACITY_INCREMENT - 1) / CAPACITY_INCREMENT)
1.171 - * CAPACITY_INCREMENT;
1.172 - final int[] newTypes = new int[newCapacity];
1.173 -
1.174 - if (size > 0) {
1.175 - arraycopy(types, 0, newTypes, 0, size);
1.176 - }
1.177 -
1.178 - types = newTypes;
1.179 - }
1.180 -
1.181 - // no System.arraycopy
1.182 - private void arraycopy(final int[] src, final int srcPos,
1.183 - final int[] dest, final int destPos,
1.184 - final int length) {
1.185 - for (int i = 0; i < length; ++i) {
1.186 - dest[destPos + i] = src[srcPos + i];
1.187 - }
1.188 - }
1.189 -}