12bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson/* 22bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Copyright (C) 2011 The Android Open Source Project 32bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 42bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 52bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * you may not use this file except in compliance with the License. 62bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * You may obtain a copy of the License at 72bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 82bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 92bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Unless required by applicable law or agreed to in writing, software 112bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 122bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * See the License for the specific language governing permissions and 142bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * limitations under the License. 152bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 162bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 172bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpackage com.android.dex; 182bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 192bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpublic final class ClassData { 202bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final Field[] staticFields; 212bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final Field[] instanceFields; 222bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final Method[] directMethods; 232bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final Method[] virtualMethods; 242bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 252bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public ClassData(Field[] staticFields, Field[] instanceFields, 262bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson Method[] directMethods, Method[] virtualMethods) { 272bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.staticFields = staticFields; 282bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.instanceFields = instanceFields; 292bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.directMethods = directMethods; 302bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.virtualMethods = virtualMethods; 312bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 322bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 332bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Field[] getStaticFields() { 342bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return staticFields; 352bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 362bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 372bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Field[] getInstanceFields() { 382bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return instanceFields; 392bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 402bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 412bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Method[] getDirectMethods() { 422bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return directMethods; 432bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 442bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 452bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Method[] getVirtualMethods() { 462bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return virtualMethods; 472bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 482bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 492bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Field[] allFields() { 502bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson Field[] result = new Field[staticFields.length + instanceFields.length]; 512bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson System.arraycopy(staticFields, 0, result, 0, staticFields.length); 522bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson System.arraycopy(instanceFields, 0, result, staticFields.length, instanceFields.length); 532bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return result; 542bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 552bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 562bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Method[] allMethods() { 572bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson Method[] result = new Method[directMethods.length + virtualMethods.length]; 582bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson System.arraycopy(directMethods, 0, result, 0, directMethods.length); 592bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson System.arraycopy(virtualMethods, 0, result, directMethods.length, virtualMethods.length); 602bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return result; 612bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 622bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 632bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static class Field { 642bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final int fieldIndex; 652bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final int accessFlags; 662bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 672bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Field(int fieldIndex, int accessFlags) { 682bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.fieldIndex = fieldIndex; 692bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.accessFlags = accessFlags; 702bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 712bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 722bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public int getFieldIndex() { 732bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return fieldIndex; 742bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 752bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 762bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public int getAccessFlags() { 772bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return accessFlags; 782bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 792bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 802bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 812bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static class Method { 822bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final int methodIndex; 832bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final int accessFlags; 842bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final int codeOffset; 852bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 862bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public Method(int methodIndex, int accessFlags, int codeOffset) { 872bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.methodIndex = methodIndex; 882bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.accessFlags = accessFlags; 892bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.codeOffset = codeOffset; 902bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 912bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 922bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public int getMethodIndex() { 932bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return methodIndex; 942bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 952bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 962bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public int getAccessFlags() { 972bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return accessFlags; 982bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 992bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 1002bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public int getCodeOffset() { 1012bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return codeOffset; 1022bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 1032bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 1042bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson} 105