LongRenderer.java revision 0b2f7d6a57e90424b3ee455c041aab3996c05f2c
1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/* 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * [The "BSD licence"] 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * Copyright (c) 2010 Ben Gruver (JesusFreke) 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * All rights reserved. 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * Redistribution and use in source and binary forms, with or without 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * modification, are permitted provided that the following conditions 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * are met: 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 1. Redistributions of source code must retain the above copyright 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * notice, this list of conditions and the following disclaimer. 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 2. Redistributions in binary form must reproduce the above copyright 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * notice, this list of conditions and the following disclaimer in the 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * documentation and/or other materials provided with the distribution. 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 3. The name of the author may not be used to endorse or promote products 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * derived from this software without specific prior written permission. 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinespackage org.jf.baksmali.Renderers; 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesimport org.jf.baksmali.IndentingWriter; 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesimport java.io.IOException; 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinespublic class LongRenderer { 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines public static void writeTo(IndentingWriter writer, long val) throws IOException { 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines if (val<0) { 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write("-0x"); 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.printLongAsHex(-val); 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write('L'); 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } else { 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write("0x"); 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.printLongAsHex(val); 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write('L'); 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines public static void writeSignedIntOrLongTo(IndentingWriter writer, long val) throws IOException { 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines if (val<0) { 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write("-0x"); 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.printLongAsHex(-val); 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines if (val < Integer.MIN_VALUE) { 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write('L'); 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } else { 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write("0x"); 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.printLongAsHex(val); 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines if (val > Integer.MAX_VALUE) { 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines writer.write('L'); 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines