1b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver/* 2b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * Copyright 2012, Google Inc. 3b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * All rights reserved. 4b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * 5b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * Redistribution and use in source and binary forms, with or without 6b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * modification, are permitted provided that the following conditions are 7b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * met: 8b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * 9b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * * Redistributions of source code must retain the above copyright 10b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * notice, this list of conditions and the following disclaimer. 11b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * * Redistributions in binary form must reproduce the above 12b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * copyright notice, this list of conditions and the following disclaimer 13b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * in the documentation and/or other materials provided with the 14b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * distribution. 15b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * * Neither the name of Google Inc. nor the names of its 16b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * contributors may be used to endorse or promote products derived from 17b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * this software without specific prior written permission. 18b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * 19b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver */ 31b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver 32b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruverpackage org.jf.dexlib2.base.value; 33b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver 3422c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruverimport com.google.common.primitives.Ints; 3522c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruverimport com.google.common.primitives.Shorts; 36b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruverimport org.jf.dexlib2.ValueType; 3722c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruverimport org.jf.dexlib2.iface.value.EncodedValue; 38b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruverimport org.jf.dexlib2.iface.value.ShortEncodedValue; 39b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver 4022c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruverimport javax.annotation.Nonnull; 4122c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruverimport javax.annotation.Nullable; 4222c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver 43b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruverpublic abstract class BaseShortEncodedValue implements ShortEncodedValue { 44b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver @Override 45b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver public int hashCode() { 46b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver return getValue(); 47b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver } 48b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver 49b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver @Override 5022c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver public boolean equals(@Nullable Object o) { 5122c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver if (o instanceof ShortEncodedValue) { 5222c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver return getValue() == ((ShortEncodedValue)o).getValue(); 53b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver } 54b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver return false; 55b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver } 56b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver 5722c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver @Override 5822c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver public int compareTo(@Nonnull EncodedValue o) { 5922c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver int res = Ints.compare(getValueType(), o.getValueType()); 6022c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver if (res != 0) return res; 6122c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver return Shorts.compare(getValue(), ((ShortEncodedValue)o).getValue()); 6222c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver } 6322c3185bb7c8618437eabe6c597549e0989ec4e6Ben Gruver 64b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver public int getValueType() { return ValueType.SHORT; } 65b76e75c8bcc11d1e3f348166e2e9f83085154fc8Ben Gruver} 66