198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver/* 298eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * Copyright 2012, Google Inc. 398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * All rights reserved. 498eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * 598eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * Redistribution and use in source and binary forms, with or without 698eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * modification, are permitted provided that the following conditions are 798eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * met: 898eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * 998eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * * Redistributions of source code must retain the above copyright 1098eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * notice, this list of conditions and the following disclaimer. 1198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * * Redistributions in binary form must reproduce the above 1298eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * copyright notice, this list of conditions and the following disclaimer 1398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * in the documentation and/or other materials provided with the 1498eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * distribution. 1598eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * * Neither the name of Google Inc. nor the names of its 1698eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * contributors may be used to endorse or promote products derived from 1798eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * this software without specific prior written permission. 1898eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * 1998eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2098eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2298eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2498eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2598eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2698eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2798eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2898eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2998eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3098eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver */ 3198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver 3298eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruverpackage org.jf.dexlib2.util; 3398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver 3498eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruverimport org.jf.dexlib2.ValueType; 3598eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruverimport org.jf.dexlib2.iface.value.*; 3698eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver 3785b31462241daf1d5d5e7b5e94ca926e46dff971Ben Gruverpublic final class EncodedValueUtils { 3898eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver public static boolean isDefaultValue(EncodedValue encodedValue) { 3998eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver switch (encodedValue.getValueType()) { 4098eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.BOOLEAN: 4198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return !((BooleanEncodedValue)encodedValue).getValue(); 4298eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.BYTE: 4398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((ByteEncodedValue)encodedValue).getValue() == 0; 4498eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.CHAR: 4598eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((CharEncodedValue)encodedValue).getValue() == 0; 4698eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.DOUBLE: 4798eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((DoubleEncodedValue)encodedValue).getValue() == 0; 4898eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.FLOAT: 4998eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((FloatEncodedValue)encodedValue).getValue() == 0; 5098eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.INT: 5198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((IntEncodedValue)encodedValue).getValue() == 0; 5298eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.LONG: 5398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((LongEncodedValue)encodedValue).getValue() == 0; 5498eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.NULL: 5598eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return true; 5698eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver case ValueType.SHORT: 5798eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return ((ShortEncodedValue)encodedValue).getValue() == 0; 5898eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver } 5998eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver return false; 6098eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver } 6198eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver 6285b31462241daf1d5d5e7b5e94ca926e46dff971Ben Gruver private EncodedValueUtils() {} 6398eede2ce107a467afa03df6f9a97c05737bd1aaBen Gruver} 64