aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java358
1 files changed, 0 insertions, 358 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java
deleted file mode 100644
index 67d366b8..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * The constant pool of a Java class. The constant pool is a collection of
- * constants used in a Java class file. It stores strings, constant values,
- * class names, method names, field names etc.
- *
- * @see <a href="http://java.sun.com/docs/books/vmspec/">The Java Virtual
- * Machine Specification</a>
- */
-public class ConstantPool {
-
- /** The entries in the constant pool. */
- private final List<ConstantPoolEntry> entries = new ArrayList<ConstantPoolEntry>();
-
- /**
- * A Hashtable of UTF8 entries - used to get constant pool indexes of
- * the UTF8 values quickly
- */
- private final Map<String, Integer> utf8Indexes = new HashMap<String, Integer>();
-
- /** Initialise the constant pool. */
- public ConstantPool() {
- // The zero index is never present in the constant pool itself so
- // we add a null entry for it
- entries.add(null);
- }
-
- /**
- * Read the constant pool from a class input stream.
- *
- * @param classStream the DataInputStream of a class file.
- * @exception IOException if there is a problem reading the constant pool
- * from the stream
- */
- public void read(DataInputStream classStream) throws IOException {
- int numEntries = classStream.readUnsignedShort();
-
- for (int i = 1; i < numEntries;) {
- ConstantPoolEntry nextEntry
- = ConstantPoolEntry.readEntry(classStream);
-
- i += nextEntry.getNumEntries();
-
- addEntry(nextEntry);
- }
- }
-
- /**
- * Get the size of the constant pool.
- *
- * @return the size of the constant pool
- */
- public int size() {
- return entries.size();
- }
-
- /**
- * Add an entry to the constant pool.
- *
- * @param entry the new entry to be added to the constant pool.
- * @return the index into the constant pool at which the entry is
- * stored.
- */
- public int addEntry(ConstantPoolEntry entry) {
- int index = entries.size();
-
- entries.add(entry);
-
- int numSlots = entry.getNumEntries();
-
- // add null entries for any additional slots required.
- for (int j = 0; j < numSlots - 1; ++j) {
- entries.add(null);
- }
-
- if (entry instanceof Utf8CPInfo) {
- Utf8CPInfo utf8Info = (Utf8CPInfo) entry;
-
- utf8Indexes.put(utf8Info.getValue(), new Integer(index));
- }
-
- return index;
- }
-
- /**
- * Resolve the entries in the constant pool. Resolution of the constant
- * pool involves transforming indexes to other constant pool entries
- * into the actual data for that entry.
- */
- public void resolve() {
- for (ConstantPoolEntry poolInfo : entries) {
- if (poolInfo != null && !poolInfo.isResolved()) {
- poolInfo.resolve(this);
- }
- }
- }
-
-
- /**
- * Get an constant pool entry at a particular index.
- *
- * @param index the index into the constant pool.
- * @return the constant pool entry at that index.
- */
- public ConstantPoolEntry getEntry(int index) {
- return entries.get(index);
- }
-
- /**
- * Get the index of a given UTF8 constant pool entry.
- *
- * @param value the string value of the UTF8 entry.
- * @return the index at which the given string occurs in the constant
- * pool or -1 if the value does not occur.
- */
- public int getUTF8Entry(String value) {
- int index = -1;
- Integer indexInteger = utf8Indexes.get(value);
-
- if (indexInteger != null) {
- index = indexInteger.intValue();
- }
-
- return index;
- }
-
- /**
- * Get the index of a given CONSTANT_CLASS entry in the constant pool.
- *
- * @param className the name of the class for which the class entry
- * index is required.
- * @return the index at which the given class entry occurs in the
- * constant pool or -1 if the value does not occur.
- */
- public int getClassEntry(String className) {
- int index = -1;
-
- final int size = entries.size();
- for (int i = 0; i < size && index == -1; ++i) {
- Object element = entries.get(i);
-
- if (element instanceof ClassCPInfo) {
- ClassCPInfo classinfo = (ClassCPInfo) element;
-
- if (classinfo.getClassName().equals(className)) {
- index = i;
- }
- }
- }
-
- return index;
- }
-
- /**
- * Get the index of a given constant value entry in the constant pool.
- *
- * @param constantValue the constant value for which the index is
- * required.
- * @return the index at which the given value entry occurs in the
- * constant pool or -1 if the value does not occur.
- */
- public int getConstantEntry(Object constantValue) {
- int index = -1;
-
- final int size = entries.size();
- for (int i = 0; i < size && index == -1; ++i) {
- Object element = entries.get(i);
-
- if (element instanceof ConstantCPInfo) {
- ConstantCPInfo constantEntry = (ConstantCPInfo) element;
-
- if (constantEntry.getValue().equals(constantValue)) {
- index = i;
- }
- }
- }
-
- return index;
- }
-
- /**
- * Get the index of a given CONSTANT_METHODREF entry in the constant
- * pool.
- *
- * @param methodClassName the name of the class which contains the
- * method being referenced.
- * @param methodName the name of the method being referenced.
- * @param methodType the type descriptor of the method being referenced.
- * @return the index at which the given method ref entry occurs in the
- * constant pool or -1 if the value does not occur.
- */
- public int getMethodRefEntry(String methodClassName, String methodName,
- String methodType) {
- int index = -1;
-
- final int size = entries.size();
- for (int i = 0; i < size && index == -1; ++i) {
- Object element = entries.get(i);
-
- if (element instanceof MethodRefCPInfo) {
- MethodRefCPInfo methodRefEntry = (MethodRefCPInfo) element;
-
- if (methodRefEntry.getMethodClassName().equals(methodClassName)
- && methodRefEntry.getMethodName().equals(methodName)
- && methodRefEntry.getMethodType().equals(methodType)) {
- index = i;
- }
- }
- }
-
- return index;
- }
-
- /**
- * Get the index of a given CONSTANT_INTERFACEMETHODREF entry in the
- * constant pool.
- *
- * @param interfaceMethodClassName the name of the interface which
- * contains the method being referenced.
- * @param interfaceMethodName the name of the method being referenced.
- * @param interfaceMethodType the type descriptor of the method being
- * referenced.
- * @return the index at which the given method ref entry occurs in the
- * constant pool or -1 if the value does not occur.
- */
- public int getInterfaceMethodRefEntry(String interfaceMethodClassName,
- String interfaceMethodName,
- String interfaceMethodType) {
- int index = -1;
-
- final int size = entries.size();
- for (int i = 0; i < size && index == -1; ++i) {
- Object element = entries.get(i);
-
- if (element instanceof InterfaceMethodRefCPInfo) {
- InterfaceMethodRefCPInfo interfaceMethodRefEntry
- = (InterfaceMethodRefCPInfo) element;
-
- if (interfaceMethodRefEntry.getInterfaceMethodClassName().equals(
- interfaceMethodClassName)
- && interfaceMethodRefEntry.getInterfaceMethodName().equals(
- interfaceMethodName)
- && interfaceMethodRefEntry.getInterfaceMethodType().equals(
- interfaceMethodType)) {
- index = i;
- }
- }
- }
-
- return index;
- }
-
- /**
- * Get the index of a given CONSTANT_FIELDREF entry in the constant
- * pool.
- *
- * @param fieldClassName the name of the class which contains the field
- * being referenced.
- * @param fieldName the name of the field being referenced.
- * @param fieldType the type descriptor of the field being referenced.
- * @return the index at which the given field ref entry occurs in the
- * constant pool or -1 if the value does not occur.
- */
- public int getFieldRefEntry(String fieldClassName, String fieldName,
- String fieldType) {
- int index = -1;
-
- final int size = entries.size();
- for (int i = 0; i < size && index == -1; ++i) {
- Object element = entries.get(i);
-
- if (element instanceof FieldRefCPInfo) {
- FieldRefCPInfo fieldRefEntry = (FieldRefCPInfo) element;
-
- if (fieldRefEntry.getFieldClassName().equals(fieldClassName)
- && fieldRefEntry.getFieldName().equals(fieldName)
- && fieldRefEntry.getFieldType().equals(fieldType)) {
- index = i;
- }
- }
- }
-
- return index;
- }
-
- /**
- * Get the index of a given CONSTANT_NAMEANDTYPE entry in the constant
- * pool.
- *
- * @param name the name
- * @param type the type
- * @return the index at which the given NameAndType entry occurs in the
- * constant pool or -1 if the value does not occur.
- */
- public int getNameAndTypeEntry(String name, String type) {
- int index = -1;
-
- final int size = entries.size();
- for (int i = 0; i < size && index == -1; ++i) {
- Object element = entries.get(i);
-
- if (element instanceof NameAndTypeCPInfo) {
- NameAndTypeCPInfo nameAndTypeEntry
- = (NameAndTypeCPInfo) element;
-
- if (nameAndTypeEntry.getName().equals(name)
- && nameAndTypeEntry.getType().equals(type)) {
- index = i;
- }
- }
- }
-
- return index;
- }
-
- /**
- * Dump the constant pool to a string.
- *
- * @return the constant pool entries as strings
- */
- public String toString() {
- StringBuilder sb = new StringBuilder("\n");
- final int size = entries.size();
-
- for (int i = 0; i < size; ++i) {
- sb.append("[" + i + "] = " + getEntry(i) + "\n");
- }
-
- return sb.toString();
- }
-
-}
-