AnnotationEncodedValueAdaptor.java revision 4b72225e9d81201838f387171a68a832486903f9
10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/* 20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * [The "BSD licence"] 30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Copyright (c) 2010 Ben Gruver (JesusFreke) 40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * All rights reserved. 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Redistribution and use in source and binary forms, with or without 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * modification, are permitted provided that the following conditions 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * are met: 90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1. Redistributions of source code must retain the above copyright 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * notice, this list of conditions and the following disclaimer. 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 2. Redistributions in binary form must reproduce the above copyright 120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * notice, this list of conditions and the following disclaimer in the 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * documentation and/or other materials provided with the distribution. 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 3. The name of the author may not be used to endorse or promote products 150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * derived from this software without specific prior written permission. 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochpackage org.jf.baksmali.Adaptors.EncodedValue; 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport org.jf.baksmali.Adaptors.ReferenceFormatter; 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport org.jf.util.IndentingWriter; 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport org.jf.dexlib.EncodedValue.AnnotationEncodedSubValue; 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport java.io.IOException; 360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochpublic abstract class AnnotationEncodedValueAdaptor { 380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public static void writeTo(IndentingWriter writer, AnnotationEncodedSubValue encodedAnnotation) 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch throws IOException { 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.write(".subannotation "); 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ReferenceFormatter.writeTypeReference(writer, encodedAnnotation.annotationType); 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.write('\n'); 440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writeElementsTo(writer, encodedAnnotation); 460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.write(".end subannotation"); 470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public static void writeElementsTo(IndentingWriter writer, AnnotationEncodedSubValue encodedAnnotation) 500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch throws IOException { 510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.indent(4); 520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch for (int i=0; i<encodedAnnotation.names.length; i++) { 530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.write(encodedAnnotation.names[i].getStringValue()); 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.write(" = "); 550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EncodedValueAdaptor.writeTo(writer, encodedAnnotation.values[i]); 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.write('\n'); 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch writer.deindent(4); 600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch