• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * [The "BSD licence"]
3  * Copyright (c) 2010 Ben Gruver
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 package org.jf.baksmali.Adaptors;
30 
31 import org.jf.dexlib2.ReferenceType;
32 import org.jf.dexlib2.iface.reference.*;
33 import org.jf.dexlib2.util.ReferenceUtil;
34 import org.jf.util.IndentingWriter;
35 import org.jf.util.StringUtils;
36 
37 import java.io.IOException;
38 
39 public class ReferenceFormatter {
writeStringReference(IndentingWriter writer, String item)40     public static void writeStringReference(IndentingWriter writer, String item) throws IOException {
41         writer.write('"');
42         StringUtils.writeEscapedString(writer, item);
43         writer.write('"');
44     }
45 
writeReference(IndentingWriter writer, int referenceType, Reference reference)46     public static void writeReference(IndentingWriter writer, int referenceType,
47                                       Reference reference) throws IOException {
48         switch (referenceType) {
49             case ReferenceType.STRING:
50                 writeStringReference(writer, ((StringReference)reference).getString());
51                 return;
52             case ReferenceType.TYPE:
53                 writer.write(((TypeReference)reference).getType());
54                 return;
55             case ReferenceType.METHOD:
56                 ReferenceUtil.writeMethodDescriptor(writer, (MethodReference)reference);
57                 return;
58             case ReferenceType.FIELD:
59                 ReferenceUtil.writeFieldDescriptor(writer, (FieldReference)reference);
60                 return;
61             default:
62                 throw new IllegalStateException("Unknown reference type");
63         }
64     }
65 }
66