Fix IndentingWriter.printUnsignedLongAsHex and printSignedIntAsDec

A previous change had introduced a regression where they were printing
numbers backwards.
This commit is contained in:
Ben Gruver 2013-04-16 00:26:24 -07:00
parent ec28400394
commit d9c50f3f36

View File

@ -34,7 +34,7 @@ import java.io.Writer;
// TODO: add a write(String) method that doesn't scan for embedded newlines? // TODO: add a write(String) method that doesn't scan for embedded newlines?
public class IndentingWriter extends Writer { public class IndentingWriter extends Writer {
protected final Writer writer; protected final Writer writer;
protected final char[] buffer = new char[16]; protected final char[] buffer = new char[24];
protected int indentLevel = 0; protected int indentLevel = 0;
private boolean beginningOfLine = true; private boolean beginningOfLine = true;
private static final String newLine = System.getProperty("line.separator"); private static final String newLine = System.getProperty("line.separator");
@ -176,23 +176,25 @@ public class IndentingWriter extends Writer {
} }
public void printUnsignedLongAsHex(long value) throws IOException { public void printUnsignedLongAsHex(long value) throws IOException {
int bufferIndex = 0; int bufferIndex = 23;
do { do {
int digit = (int)(value & 15); int digit = (int)(value & 15);
if (digit < 10) { if (digit < 10) {
buffer[bufferIndex++] = (char)(digit + '0'); buffer[bufferIndex--] = (char)(digit + '0');
} else { } else {
buffer[bufferIndex++] = (char)((digit - 10) + 'a'); buffer[bufferIndex--] = (char)((digit - 10) + 'a');
} }
value >>>= 4; value >>>= 4;
} while (value != 0); } while (value != 0);
writeLine(buffer, 0, bufferIndex); bufferIndex++;
writeLine(buffer, bufferIndex, 24-bufferIndex);
} }
public void printSignedIntAsDec(int value) throws IOException { public void printSignedIntAsDec(int value) throws IOException {
int bufferIndex = 0; int bufferIndex = 15;
if (value < 0) { if (value < 0) {
value *= -1; value *= -1;
@ -201,11 +203,13 @@ public class IndentingWriter extends Writer {
do { do {
int digit = value % 10; int digit = value % 10;
buffer[bufferIndex++] = (char)(digit + '0'); buffer[bufferIndex--] = (char)(digit + '0');
value = value / 10; value = value / 10;
} while (value != 0); } while (value != 0);
writeLine(buffer, 0, bufferIndex); bufferIndex++;
writeLine(buffer, bufferIndex, 16-bufferIndex);
} }
} }