/* * Copyright (C) 2011 The Android Open Source Project * * Licensed 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 com.android.dex; public final class ClassData { private final Field[] staticFields; private final Field[] instanceFields; private final Method[] directMethods; private final Method[] virtualMethods; public ClassData(Field[] staticFields, Field[] instanceFields, Method[] directMethods, Method[] virtualMethods) { this.staticFields = staticFields; this.instanceFields = instanceFields; this.directMethods = directMethods; this.virtualMethods = virtualMethods; } public Field[] getStaticFields() { return staticFields; } public Field[] getInstanceFields() { return instanceFields; } public Method[] getDirectMethods() { return directMethods; } public Method[] getVirtualMethods() { return virtualMethods; } public Field[] allFields() { Field[] result = new Field[staticFields.length + instanceFields.length]; System.arraycopy(staticFields, 0, result, 0, staticFields.length); System.arraycopy(instanceFields, 0, result, staticFields.length, instanceFields.length); return result; } public Method[] allMethods() { Method[] result = new Method[directMethods.length + virtualMethods.length]; System.arraycopy(directMethods, 0, result, 0, directMethods.length); System.arraycopy(virtualMethods, 0, result, directMethods.length, virtualMethods.length); return result; } public static class Field { private final int fieldIndex; private final int accessFlags; public Field(int fieldIndex, int accessFlags) { this.fieldIndex = fieldIndex; this.accessFlags = accessFlags; } public int getFieldIndex() { return fieldIndex; } public int getAccessFlags() { return accessFlags; } } public static class Method { private final int methodIndex; private final int accessFlags; private final int codeOffset; public Method(int methodIndex, int accessFlags, int codeOffset) { this.methodIndex = methodIndex; this.accessFlags = accessFlags; this.codeOffset = codeOffset; } public int getMethodIndex() { return methodIndex; } public int getAccessFlags() { return accessFlags; } public int getCodeOffset() { return codeOffset; } } }