1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/* 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * Copyright 2013, Google Inc. 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * All rights reserved. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * modification, are permitted provided that the following conditions are 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * met: 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * in the documentation and/or other materials provided with the 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * distribution. 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * this software without specific prior written permission. 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */ 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