1/* 2 * Copyright 2013, Google Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * * Redistributions in binary form must reproduce the above 12 * copyright notice, this list of conditions and the following disclaimer 13 * in the documentation and/or other materials provided with the 14 * distribution. 15 * * Neither the name of Google Inc. nor the names of its 16 * contributors may be used to endorse or promote products derived from 17 * this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32package org.jf.baksmali.Adaptors.Debug; 33 34import org.jf.baksmali.Adaptors.ReferenceFormatter; 35import org.jf.util.IndentingWriter; 36 37import javax.annotation.Nonnull; 38import javax.annotation.Nullable; 39import java.io.IOException; 40 41public class LocalFormatter { 42 /** 43 * Writes out the given local info 44 * 45 * The written string will be something like: 46 * 47 * "localVar":Ljava/lang/String;, "SomeSignature" 48 * "localVar":Ljava/lang/String; 49 * "localVar":V, "SomeSignature" 50 * null:Ljava/lang/String;, "SomeSignature" 51 * null:V, "SomeSignature" 52 * 53 * One of name, type or signature must be non-null 54 */ 55 public static void writeLocal(@Nonnull IndentingWriter writer, @Nullable String name, @Nullable String type, 56 @Nullable String signature) throws IOException { 57 if (name != null) { 58 ReferenceFormatter.writeStringReference(writer, name); 59 } else { 60 writer.write("null"); 61 } 62 writer.write(':'); 63 if (type != null) { 64 writer.write(type); 65 } else { 66 writer.write("V"); 67 } 68 if (signature != null) { 69 writer.write(", "); 70 ReferenceFormatter.writeStringReference(writer, signature); 71 } 72 } 73} 74