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 17package com.android.dx.merge; 18 19import com.android.dx.io.DexBuffer; 20import com.android.dx.util.Unsigned; 21import java.util.Arrays; 22 23public final class TypeList implements Comparable<TypeList> { 24 25 public static final TypeList EMPTY = new TypeList(null, new short[0]); 26 27 private final DexBuffer buffer; 28 private final short[] types; 29 30 public TypeList(DexBuffer buffer, short[] types) { 31 this.buffer = buffer; 32 this.types = types; 33 } 34 35 public short[] getTypes() { 36 return types; 37 } 38 39 public int compareTo(TypeList other) { 40 for (int i = 0; i < types.length && i < other.types.length; i++) { 41 if (types[i] != other.types[i]) { 42 return Unsigned.compare(types[i], other.types[i]); 43 } 44 } 45 return Unsigned.compare(types.length, other.types.length); 46 } 47 48 @Override 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(buffer != null ? buffer.typeNames().get(types[i]) : types[i]); 53 } 54 result.append(")"); 55 return result.toString(); 56 } 57} 58