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