1e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson/* 2e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * Copyright (C) 2011 The Android Open Source Project 3e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * 4e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 5e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * you may not use this file except in compliance with the License. 6e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * You may obtain a copy of the License at 7e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * 8e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * 10e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * Unless required by applicable law or agreed to in writing, software 11e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * See the License for the specific language governing permissions and 14e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson * limitations under the License. 15e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson */ 16e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 17e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilsonpackage com.android.dx.io; 18e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 19e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilsonpublic final class ClassData { 20e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final Field[] staticFields; 21e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final Field[] instanceFields; 22e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final Method[] directMethods; 23e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final Method[] virtualMethods; 24e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 25e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public ClassData(Field[] staticFields, Field[] instanceFields, 26e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson Method[] directMethods, Method[] virtualMethods) { 27e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.staticFields = staticFields; 28e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.instanceFields = instanceFields; 29e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.directMethods = directMethods; 30e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.virtualMethods = virtualMethods; 31e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 32e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 33e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Field[] getStaticFields() { 34e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return staticFields; 35e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 36e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 37e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Field[] getInstanceFields() { 38e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return instanceFields; 39e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 40e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 41e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Method[] getDirectMethods() { 42e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return directMethods; 43e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 44e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 45e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Method[] getVirtualMethods() { 46e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return virtualMethods; 47e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 48e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 49e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Field[] allFields() { 50e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson Field[] result = new Field[staticFields.length + instanceFields.length]; 51e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson System.arraycopy(staticFields, 0, result, 0, staticFields.length); 52e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson System.arraycopy(instanceFields, 0, result, staticFields.length, instanceFields.length); 53e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return result; 54e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 55e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 56e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Method[] allMethods() { 57e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson Method[] result = new Method[directMethods.length + virtualMethods.length]; 58e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson System.arraycopy(directMethods, 0, result, 0, directMethods.length); 59e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson System.arraycopy(virtualMethods, 0, result, directMethods.length, virtualMethods.length); 60e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return result; 61e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 62e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 63e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public static class Field { 64e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final int fieldIndex; 65e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final int accessFlags; 66e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 67e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Field(int fieldIndex, int accessFlags) { 68e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.fieldIndex = fieldIndex; 69e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.accessFlags = accessFlags; 70e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 71e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 72e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public int getFieldIndex() { 73e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return fieldIndex; 74e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 75e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 76e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public int getAccessFlags() { 77e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return accessFlags; 78e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 79e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 80e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 81e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public static class Method { 82e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final int methodIndex; 83e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final int accessFlags; 84e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson private final int codeOffset; 85e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 86e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public Method(int methodIndex, int accessFlags, int codeOffset) { 87e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.methodIndex = methodIndex; 88e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.accessFlags = accessFlags; 89e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson this.codeOffset = codeOffset; 90e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 91e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 92e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public int getMethodIndex() { 93e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return methodIndex; 94e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 95e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 96e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public int getAccessFlags() { 97e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return accessFlags; 98e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 99e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson 100e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson public int getCodeOffset() { 101e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson return codeOffset; 102e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 103e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson } 104e31a42442bbd2cdc69e959f5209b793cf0aa7217Jesse Wilson} 105