12bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson/* 22bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Copyright (C) 2011 The Android Open Source Project 32bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 42bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 52bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * you may not use this file except in compliance with the License. 62bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * You may obtain a copy of the License at 72bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 82bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 92bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Unless required by applicable law or agreed to in writing, software 112bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 122bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * See the License for the specific language governing permissions and 142bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * limitations under the License. 152bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 162bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 172bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpackage com.android.dex; 182bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 192bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonimport com.android.dex.util.ByteArrayByteInput; 202bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonimport com.android.dex.util.ByteInput; 212bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 222bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson/** 232bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * An encoded value or array. 242bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 252bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpublic final class EncodedValue implements Comparable<EncodedValue> { 262bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private final byte[] data; 272bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 282bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public EncodedValue(byte[] data) { 292bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson this.data = data; 302bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 312bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 322bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public ByteInput asByteInput() { 332bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return new ByteArrayByteInput(data); 342bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 352bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 362bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public byte[] getBytes() { 372bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return data; 382bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 392bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 402bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public void writeTo(Dex.Section out) { 412bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson out.write(data); 422bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 432bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 442bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson @Override public int compareTo(EncodedValue other) { 452bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson int size = Math.min(data.length, other.data.length); 462bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson for (int i = 0; i < size; i++) { 472bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson if (data[i] != other.data[i]) { 482bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return (data[i] & 0xff) - (other.data[i] & 0xff); 492bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 502bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 512bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return data.length - other.data.length; 522bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 532bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 542bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson @Override public String toString() { 552bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson return Integer.toHexString(data[0] & 0xff) + "...(" + data.length + ")"; 562bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson } 572bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson} 58