1ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com/*
2ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * [The "BSD licence"]
300fc68adf2e39aeb9fed35293f2576bbe729ec4bJesusFreke@JesusFreke.com * Copyright (c) 2010 Ben Gruver (JesusFreke)
4ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * All rights reserved.
5ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com *
6ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * Redistribution and use in source and binary forms, with or without
7ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * modification, are permitted provided that the following conditions
8ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * are met:
9ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * 1. Redistributions of source code must retain the above copyright
10ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com *    notice, this list of conditions and the following disclaimer.
11ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * 2. Redistributions in binary form must reproduce the above copyright
12ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com *    notice, this list of conditions and the following disclaimer in the
13ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com *    documentation and/or other materials provided with the distribution.
14ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * 3. The name of the author may not be used to endorse or promote products
15ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com *    derived from this software without specific prior written permission.
16ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com *
17ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com */
28ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
296ef13753e78bb7abc7e7683d5e533c3395d4a9b6JesusFreke@JesusFreke.compackage org.jf.baksmali.Adaptors;
30ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
314b72225e9d81201838f387171a68a832486903f9JesusFreke@JesusFreke.comimport org.jf.util.IndentingWriter;
326eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com
336eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.comimport java.io.IOException;
346eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com
35ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.compublic abstract class MethodItem implements Comparable<MethodItem> {
36b2e1e2067d5179b0ec38c76a5191909f5a7dc1ccJesusFreke@JesusFreke.com    protected final int codeAddress;
37ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
3816a911620ccf7b530b873fb71cf13e8dcb88ad28JesusFreke@JesusFreke.com    protected MethodItem(int codeAddress) {
3916a911620ccf7b530b873fb71cf13e8dcb88ad28JesusFreke@JesusFreke.com        this.codeAddress = codeAddress;
40ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com    }
41ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
4216a911620ccf7b530b873fb71cf13e8dcb88ad28JesusFreke@JesusFreke.com    public int getCodeAddress() {
4316a911620ccf7b530b873fb71cf13e8dcb88ad28JesusFreke@JesusFreke.com        return codeAddress;
44ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com    }
45ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
46da69b22d6fe70d082b18858aea0d15ec383f1865JesusFreke@JesusFreke.com    //return an arbitrary double that determines how this item will be sorted with others at the same address
47da69b22d6fe70d082b18858aea0d15ec383f1865JesusFreke@JesusFreke.com    public abstract double getSortOrder();
48ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
49ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com    public int compareTo(MethodItem methodItem) {
5016a911620ccf7b530b873fb71cf13e8dcb88ad28JesusFreke@JesusFreke.com        int result = ((Integer) codeAddress).compareTo(methodItem.codeAddress);
51ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com
52ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com        if (result == 0){
53da69b22d6fe70d082b18858aea0d15ec383f1865JesusFreke@JesusFreke.com            return ((Double)getSortOrder()).compareTo(methodItem.getSortOrder());
54ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com        }
55ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com        return result;
56ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com    }
576eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com
580b2f7d6a57e90424b3ee455c041aab3996c05f2cJesusFreke@JesusFreke.com    public abstract boolean writeTo(IndentingWriter writer) throws IOException;
59ad1085e32a17b342c2418c117c59d9c8305d71fcJesusFreke@JesusFreke.com}
60