1*055d4590SKeyi Gui /* 2*055d4590SKeyi Gui * Copyright (C) 2011 The Android Open Source Project 3*055d4590SKeyi Gui * 4*055d4590SKeyi Gui * Licensed under the Apache License, Version 2.0 (the "License"); 5*055d4590SKeyi Gui * you may not use this file except in compliance with the License. 6*055d4590SKeyi Gui * You may obtain a copy of the License at 7*055d4590SKeyi Gui * 8*055d4590SKeyi Gui * http://www.apache.org/licenses/LICENSE-2.0 9*055d4590SKeyi Gui * 10*055d4590SKeyi Gui * Unless required by applicable law or agreed to in writing, software 11*055d4590SKeyi Gui * distributed under the License is distributed on an "AS IS" BASIS, 12*055d4590SKeyi Gui * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*055d4590SKeyi Gui * See the License for the specific language governing permissions and 14*055d4590SKeyi Gui * limitations under the License. 15*055d4590SKeyi Gui */ 16*055d4590SKeyi Gui 17*055d4590SKeyi Gui package com.android.dex; 18*055d4590SKeyi Gui 19*055d4590SKeyi Gui import com.android.dex.util.ByteArrayByteInput; 20*055d4590SKeyi Gui import com.android.dex.util.ByteInput; 21*055d4590SKeyi Gui 22*055d4590SKeyi Gui /** 23*055d4590SKeyi Gui * An encoded value or array. 24*055d4590SKeyi Gui */ 25*055d4590SKeyi Gui public final class EncodedValue implements Comparable<EncodedValue> { 26*055d4590SKeyi Gui private final byte[] data; 27*055d4590SKeyi Gui EncodedValue(byte[] data)28*055d4590SKeyi Gui public EncodedValue(byte[] data) { 29*055d4590SKeyi Gui this.data = data; 30*055d4590SKeyi Gui } 31*055d4590SKeyi Gui asByteInput()32*055d4590SKeyi Gui public ByteInput asByteInput() { 33*055d4590SKeyi Gui return new ByteArrayByteInput(data); 34*055d4590SKeyi Gui } 35*055d4590SKeyi Gui getBytes()36*055d4590SKeyi Gui public byte[] getBytes() { 37*055d4590SKeyi Gui return data; 38*055d4590SKeyi Gui } 39*055d4590SKeyi Gui writeTo(Dex.Section out)40*055d4590SKeyi Gui public void writeTo(Dex.Section out) { 41*055d4590SKeyi Gui out.write(data); 42*055d4590SKeyi Gui } 43*055d4590SKeyi Gui 44*055d4590SKeyi Gui @Override compareTo(EncodedValue other)45*055d4590SKeyi Gui public int compareTo(EncodedValue other) { 46*055d4590SKeyi Gui int size = Math.min(data.length, other.data.length); 47*055d4590SKeyi Gui for (int i = 0; i < size; i++) { 48*055d4590SKeyi Gui if (data[i] != other.data[i]) { 49*055d4590SKeyi Gui return (data[i] & 0xff) - (other.data[i] & 0xff); 50*055d4590SKeyi Gui } 51*055d4590SKeyi Gui } 52*055d4590SKeyi Gui return data.length - other.data.length; 53*055d4590SKeyi Gui } 54*055d4590SKeyi Gui 55*055d4590SKeyi Gui @Override toString()56*055d4590SKeyi Gui public String toString() { 57*055d4590SKeyi Gui return Integer.toHexString(data[0] & 0xff) + "...(" + data.length + ")"; 58*055d4590SKeyi Gui } 59*055d4590SKeyi Gui } 60