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