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