| /* | |
| * 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; | |
| /** | |
| * A type definition. | |
| */ | |
| public final class ClassDef { | |
| public static final int NO_INDEX = -1; | |
| private final Dex buffer; | |
| private final int offset; | |
| private final int typeIndex; | |
| private final int accessFlags; | |
| private final int supertypeIndex; | |
| private final int interfacesOffset; | |
| private final int sourceFileIndex; | |
| private final int annotationsOffset; | |
| private final int classDataOffset; | |
| private final int staticValuesOffset; | |
| public ClassDef(Dex buffer, int offset, int typeIndex, int accessFlags, | |
| int supertypeIndex, int interfacesOffset, int sourceFileIndex, | |
| int annotationsOffset, int classDataOffset, int staticValuesOffset) { | |
| this.buffer = buffer; | |
| this.offset = offset; | |
| this.typeIndex = typeIndex; | |
| this.accessFlags = accessFlags; | |
| this.supertypeIndex = supertypeIndex; | |
| this.interfacesOffset = interfacesOffset; | |
| this.sourceFileIndex = sourceFileIndex; | |
| this.annotationsOffset = annotationsOffset; | |
| this.classDataOffset = classDataOffset; | |
| this.staticValuesOffset = staticValuesOffset; | |
| } | |
| public int getOffset() { | |
| return offset; | |
| } | |
| public int getTypeIndex() { | |
| return typeIndex; | |
| } | |
| public int getSupertypeIndex() { | |
| return supertypeIndex; | |
| } | |
| public int getInterfacesOffset() { | |
| return interfacesOffset; | |
| } | |
| public short[] getInterfaces() { | |
| return buffer.readTypeList(interfacesOffset).getTypes(); | |
| } | |
| public int getAccessFlags() { | |
| return accessFlags; | |
| } | |
| public int getSourceFileIndex() { | |
| return sourceFileIndex; | |
| } | |
| public int getAnnotationsOffset() { | |
| return annotationsOffset; | |
| } | |
| public int getClassDataOffset() { | |
| return classDataOffset; | |
| } | |
| public int getStaticValuesOffset() { | |
| return staticValuesOffset; | |
| } | |
| @Override | |
| public String toString() { | |
| if (buffer == null) { | |
| return typeIndex + " " + supertypeIndex; | |
| } | |
| StringBuilder result = new StringBuilder(); | |
| result.append(buffer.typeNames().get(typeIndex)); | |
| if (supertypeIndex != NO_INDEX) { | |
| result.append(" extends ").append(buffer.typeNames().get(supertypeIndex)); | |
| } | |
| return result.toString(); | |
| } | |
| } |