11080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com/* 21080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * [The "BSD licence"] 300fc68adf2e39aeb9fed35293f2576bbe729ec4bJesusFreke@JesusFreke.com * Copyright (c) 2010 Ben Gruver (JesusFreke) 41080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * All rights reserved. 51080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * 61080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * Redistribution and use in source and binary forms, with or without 71080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * modification, are permitted provided that the following conditions 81080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * are met: 91080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * 1. Redistributions of source code must retain the above copyright 101080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * notice, this list of conditions and the following disclaimer. 111080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * 2. Redistributions in binary form must reproduce the above copyright 121080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * notice, this list of conditions and the following disclaimer in the 131080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * documentation and/or other materials provided with the distribution. 141080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * 3. The name of the author may not be used to endorse or promote products 151080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * derived from this software without specific prior written permission. 161080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * 171080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 181080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 191080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 201080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 211080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 221080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 231080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 241080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 251080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 261080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 271080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com */ 281080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com 291080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.compackage org.jf.baksmali.Adaptors.EncodedValue; 301080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com 317ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruverimport org.jf.dexlib2.iface.AnnotationElement; 327ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruverimport org.jf.dexlib2.iface.value.AnnotationEncodedValue; 334b72225e9d81201838f387171a68a832486903f9JesusFreke@JesusFreke.comimport org.jf.util.IndentingWriter; 341080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com 356eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.comimport java.io.IOException; 3612b970ed4dfad768002335503e49c348ea0ed69bBen Gruverimport java.util.Collection; 371080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com 38a3cf936fc254f9d2bdec715718bef9a0f5edf600JesusFreke@JesusFreke.compublic abstract class AnnotationEncodedValueAdaptor { 395867263eb588f4671400895d1e6b01c01535061bJesusFreke@JesusFreke.com 407ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver public static void writeTo(IndentingWriter writer, AnnotationEncodedValue annotationEncodedValue) 416eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com throws IOException { 426eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com writer.write(".subannotation "); 437ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver writer.write(annotationEncodedValue.getType()); 440b2f7d6a57e90424b3ee455c041aab3996c05f2cJesusFreke@JesusFreke.com writer.write('\n'); 451080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com 467ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver writeElementsTo(writer, annotationEncodedValue.getElements()); 476eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com writer.write(".end subannotation"); 481080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com } 491080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com 5012b970ed4dfad768002335503e49c348ea0ed69bBen Gruver public static void writeElementsTo(IndentingWriter writer, 5112b970ed4dfad768002335503e49c348ea0ed69bBen Gruver Collection<? extends AnnotationElement> annotationElements) throws IOException { 526eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com writer.indent(4); 537ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver for (AnnotationElement annotationElement: annotationElements) { 547ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver writer.write(annotationElement.getName()); 556eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com writer.write(" = "); 567ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver EncodedValueAdaptor.writeTo(writer, annotationElement.getValue()); 570b2f7d6a57e90424b3ee455c041aab3996c05f2cJesusFreke@JesusFreke.com writer.write('\n'); 581080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com } 596eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com writer.deindent(4); 601080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com } 611080561460a0d509a24173d7ff38241a1f79a1b6JesusFreke@JesusFreke.com} 62