15867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com/* 25867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * [The "BSD licence"] 300fc68adf2e39aeb9fed35293f2576bbe729ec4bJesusFreke@JesusFreke.com * Copyright (c) 2010 Ben Gruver (JesusFreke) 45867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * All rights reserved. 55867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * 65867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * Redistribution and use in source and binary forms, with or without 75867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * modification, are permitted provided that the following conditions 85867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * are met: 95867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * 1. Redistributions of source code must retain the above copyright 105867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * notice, this list of conditions and the following disclaimer. 115867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * 2. Redistributions in binary form must reproduce the above copyright 125867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * notice, this list of conditions and the following disclaimer in the 135867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * documentation and/or other materials provided with the distribution. 145867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * 3. The name of the author may not be used to endorse or promote products 155867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * derived from this software without specific prior written permission. 165867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * 175867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 185867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 195867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 205867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 215867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 225867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 265867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 275867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com */ 285867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com 295867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.compackage org.jf.dexlib.Util; 305867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com 315867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.comimport org.jf.dexlib.EncodedValue.*; 320d2ce20ee4cf71a31fb3fd5083bb4cfc06e44ca1Ben Gruverimport org.jf.dexlib.TypeIdItem; 335867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com 345867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.compublic class TypeUtils 355867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com{ 360d2ce20ee4cf71a31fb3fd5083bb4cfc06e44ca1Ben Gruver public static EncodedValue makeDefaultValueForType(String type) { 375867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com switch (type.charAt(0)) { 385867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'Z': 395867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return BooleanEncodedValue.FalseValue; 405867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'B': 415867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new ByteEncodedValue((byte)0); 425867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'S': 435867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new ShortEncodedValue((short)0); 445867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'C': 455867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new CharEncodedValue((char)0); 465867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'I': 475867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new IntEncodedValue(0); 485867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'J': 495867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new LongEncodedValue(0); 505867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'F': 515867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new FloatEncodedValue(0); 525867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'D': 535867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return new DoubleEncodedValue(0); 545867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case 'L': 555867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com case '[': 565867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return NullEncodedValue.NullValue; 575867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com } 585867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com return null; 595867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com } 600d2ce20ee4cf71a31fb3fd5083bb4cfc06e44ca1Ben Gruver 610d2ce20ee4cf71a31fb3fd5083bb4cfc06e44ca1Ben Gruver public static EncodedValue makeDefaultValueForType(TypeIdItem type) { 620d2ce20ee4cf71a31fb3fd5083bb4cfc06e44ca1Ben Gruver return makeDefaultValueForType(type.getTypeDescriptor()); 630d2ce20ee4cf71a31fb3fd5083bb4cfc06e44ca1Ben Gruver } 645867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com} 65