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