1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 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 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 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. 15 */ 16 17 package com.android.dex; 18 19 import com.android.dex.util.Unsigned; 20 21 public final class TypeList implements Comparable<TypeList> { 22 23 public static final TypeList EMPTY = new TypeList(null, Dex.EMPTY_SHORT_ARRAY); 24 25 private final Dex dex; 26 private final short[] types; 27 TypeList(Dex dex, short[] types)28 public TypeList(Dex dex, short[] types) { 29 this.dex = dex; 30 this.types = types; 31 } 32 getTypes()33 public short[] getTypes() { 34 return types; 35 } 36 37 @Override compareTo(TypeList other)38 public int compareTo(TypeList other) { 39 for (int i = 0; i < types.length && i < other.types.length; i++) { 40 if (types[i] != other.types[i]) { 41 return Unsigned.compare(types[i], other.types[i]); 42 } 43 } 44 return Unsigned.compare(types.length, other.types.length); 45 } 46 47 @Override toString()48 public String toString() { 49 StringBuilder result = new StringBuilder(); 50 result.append("("); 51 for (int i = 0, typesLength = types.length; i < typesLength; i++) { 52 result.append(dex != null ? dex.typeNames().get(types[i]) : types[i]); 53 } 54 result.append(")"); 55 return result.toString(); 56 } 57 } 58