1916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath/* 2916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * Copyright (C) 2011 The Android Open Source Project 3916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * 4916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 5916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * you may not use this file except in compliance with the License. 6916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * You may obtain a copy of the License at 7916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * 8916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * 10916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * Unless required by applicable law or agreed to in writing, software 11916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * See the License for the specific language governing permissions and 14916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath * limitations under the License. 15916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath */ 16916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 17916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamathpackage com.android.dex; 18916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 19916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamathpublic final class ClassData { 20916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final Field[] staticFields; 21916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final Field[] instanceFields; 22916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final Method[] directMethods; 23916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final Method[] virtualMethods; 24916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 25916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public ClassData(Field[] staticFields, Field[] instanceFields, 26916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath Method[] directMethods, Method[] virtualMethods) { 27916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.staticFields = staticFields; 28916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.instanceFields = instanceFields; 29916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.directMethods = directMethods; 30916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.virtualMethods = virtualMethods; 31916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 32916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 33916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Field[] getStaticFields() { 34916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return staticFields; 35916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 36916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 37916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Field[] getInstanceFields() { 38916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return instanceFields; 39916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 40916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 41916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Method[] getDirectMethods() { 42916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return directMethods; 43916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 44916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 45916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Method[] getVirtualMethods() { 46916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return virtualMethods; 47916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 48916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 49916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Field[] allFields() { 50916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath Field[] result = new Field[staticFields.length + instanceFields.length]; 51916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath System.arraycopy(staticFields, 0, result, 0, staticFields.length); 52916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath System.arraycopy(instanceFields, 0, result, staticFields.length, instanceFields.length); 53916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return result; 54916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 55916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 56916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Method[] allMethods() { 57916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath Method[] result = new Method[directMethods.length + virtualMethods.length]; 58916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath System.arraycopy(directMethods, 0, result, 0, directMethods.length); 59916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath System.arraycopy(virtualMethods, 0, result, directMethods.length, virtualMethods.length); 60916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return result; 61916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 62916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 63916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public static class Field { 64916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final int fieldIndex; 65916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final int accessFlags; 66916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 67916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Field(int fieldIndex, int accessFlags) { 68916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.fieldIndex = fieldIndex; 69916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.accessFlags = accessFlags; 70916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 71916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 72916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public int getFieldIndex() { 73916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return fieldIndex; 74916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 75916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 76916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public int getAccessFlags() { 77916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return accessFlags; 78916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 79916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 80916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 81916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public static class Method { 82916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final int methodIndex; 83916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final int accessFlags; 84916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath private final int codeOffset; 85916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 86916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public Method(int methodIndex, int accessFlags, int codeOffset) { 87916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.methodIndex = methodIndex; 88916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.accessFlags = accessFlags; 89916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath this.codeOffset = codeOffset; 90916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 91916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 92916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public int getMethodIndex() { 93916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return methodIndex; 94916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 95916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 96916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public int getAccessFlags() { 97916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return accessFlags; 98916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 99916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath 100916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath public int getCodeOffset() { 101916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath return codeOffset; 102916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 103916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath } 104916c2feaf6fc24d63369cedb33ab815ec99d1bdfNarayan Kamath} 105