2 * Copyright (C) 2011 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package com.android.dx.io;
19 import com.android.dx.util.Unsigned;
21 public final class MethodId implements Comparable<MethodId> {
22 private final DexBuffer buffer;
23 private final int declaringClassIndex;
24 private final int protoIndex;
25 private final int nameIndex;
27 public MethodId(DexBuffer buffer, int declaringClassIndex, int protoIndex, int nameIndex) {
29 this.declaringClassIndex = declaringClassIndex;
30 this.protoIndex = protoIndex;
31 this.nameIndex = nameIndex;
34 public int getDeclaringClassIndex() {
35 return declaringClassIndex;
38 public int getProtoIndex() {
42 public int getNameIndex() {
46 public int compareTo(MethodId other) {
47 if (declaringClassIndex != other.declaringClassIndex) {
48 return Unsigned.compare(declaringClassIndex, other.declaringClassIndex);
50 if (nameIndex != other.nameIndex) {
51 return Unsigned.compare(nameIndex, other.nameIndex);
53 return Unsigned.compare(protoIndex, other.protoIndex);
56 public void writeTo(DexBuffer.Section out) {
57 out.writeUnsignedShort(declaringClassIndex);
58 out.writeUnsignedShort(protoIndex);
59 out.writeInt(nameIndex);
62 @Override public String toString() {
64 return declaringClassIndex + " " + protoIndex + " " + nameIndex;
66 return buffer.typeNames().get(declaringClassIndex)
67 + "." + buffer.strings().get(nameIndex)
68 + buffer.readTypeList(buffer.protoIds().get(protoIndex).getParametersOffset());