public class PrettyWriter
extends java.io.Writer
| Modifier and Type | Field and Description |
|---|---|
char[] |
buffer
Holds all the text that has been output but not yet printed.
|
int |
bufferFillPointer
The index into BUFFER where more text should be put.
|
static ThreadLocation |
indentLoc |
static int |
initialBufferSize |
static ThreadLocation |
isSharing
Whether to resolve shared structures is dependent on the out:print-circle
command line switch being set true.
|
static ThreadLocation |
lineLengthLoc |
static ThreadLocation |
miserWidthLoc |
static int |
NEWLINE_FILL |
static int |
NEWLINE_LINEAR |
static int |
NEWLINE_LITERAL |
static int |
NEWLINE_MANDATORY |
static int |
NEWLINE_MISER |
static int |
NEWLINE_SPACE
A non-nested ' ' gets an implicit NEWLINE_SPACE.
|
protected java.io.Writer |
out |
int |
pendingBlocksCount
Number of startLogicalBlock - number of endLogicalBlock.
|
| Constructor and Description |
|---|
PrettyWriter(java.io.Writer out)
Construct a PrettyWriter with
prettyPrintingMode = 1 |
PrettyWriter(java.io.Writer out,
boolean prettyPrintingMode)
Construct a PrettyWriter.
|
PrettyWriter(java.io.Writer out,
int lineLength)
Construct a PrettyWriter which breaks on a given line length.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addIndentation(int amount,
boolean current) |
void |
clearBuffer() |
void |
clearIDHash() |
void |
clearWordEnd() |
void |
close() |
void |
closeThis()
Flush and close this local Writer, but not underlying Writers.
|
void |
endLogicalBlock() |
void |
endLogicalBlock(java.lang.String suffix) |
int |
enqueue(int kind,
int size)
Enqueue a formatting token into
queueInts. |
int |
enqueueIndent(char kind,
int amount) |
void |
enqueueNewline(int kind)
Enqueue a newline formatting token.
|
void |
flush() |
void |
forcePrettyOutput() |
int |
getColumnNumber()
Not meaningful if
prettyPrintingMode > 0. |
protected int |
getMiserWidth() |
int |
getPrettyPrintingMode()
Return pretty-printing mode.
|
int |
IDHashGetFromIndex(int index) |
int |
IDHashLookup(java.lang.Object obj) |
int |
IDHashPutAtIndex(java.lang.Object obj,
int value,
int index) |
void |
initialiseIDHash() |
boolean |
isPrettyPrinting()
Is pretty printing enabled?
|
void |
lineAbbreviationHappened() |
void |
resolveBackReferences()
Walk through the queue, emitting print circle notation as described in
SRFI-38.
|
void |
setColumnNumber(int column) |
void |
setIndentation(int column) |
void |
setPrettyPrinting(boolean mode)
Turn pretty printing on or off.
|
void |
setPrettyPrintingMode(int mode)
Control pretty-printing mode.
|
void |
setSharing(boolean sharing) |
void |
startLogicalBlock(java.lang.String prefix,
boolean perLine,
java.lang.String suffix) |
void |
write(char[] str) |
void |
write(char[] str,
int start,
int count) |
void |
write(int ch)
Write a character to the buffer.
|
void |
write(java.lang.String str) |
void |
write(java.lang.String str,
int start,
int count)
Write a (sub)string to the output buffer.
|
void |
writeBackReference(int posn)
Enqueue a back-reference token to the formatting queue.
|
void |
writeBreak(int kind) |
void |
writeEndOfExpression() |
void |
writePairEnd(java.lang.Integer posn)
Enqueue a pair-end token to the formatting queue.
|
int |
writePositionMarker(boolean grouping)
A position marker is queued for every Scheme object that *could* refer
to itself (or other parts of the structure).
|
void |
writeWordEnd()
Note the end of a "word".
|
void |
writeWordStart()
Maybe write a word-separating space.
|
protected java.io.Writer out
public static ThreadLocation lineLengthLoc
public static ThreadLocation miserWidthLoc
public static ThreadLocation indentLoc
public static ThreadLocation isSharing
public static int initialBufferSize
public char[] buffer
public int bufferFillPointer
public int pendingBlocksCount
public static final int NEWLINE_LINEAR
public static final int NEWLINE_LITERAL
public static final int NEWLINE_FILL
public static final int NEWLINE_SPACE
public static final int NEWLINE_MISER
public static final int NEWLINE_MANDATORY
public PrettyWriter(java.io.Writer out)
prettyPrintingMode = 1out - The output to write toprettyPrintingModepublic PrettyWriter(java.io.Writer out,
int lineLength)
lineLength is strictly greater than one,
prettyPrintingMode is set to 1, otherwise it's set to 0.out - The output to write tolineLength - The column width lines should break on#lineLengthpublic PrettyWriter(java.io.Writer out,
boolean prettyPrintingMode)
out - The output port to write toprettyPrintingMode - If true then prettyPrintingMode = 1
otherwise prettyPrintingMode = 0public void initialiseIDHash()
public void clearIDHash()
public int IDHashLookup(java.lang.Object obj)
public int IDHashGetFromIndex(int index)
public int IDHashPutAtIndex(java.lang.Object obj,
int value,
int index)
public void setPrettyPrintingMode(int mode)
mode - the value 0 disables pretty-printing;
the value 1 enables ecplicit pretty-printing;
the value 2 enables pretty-printing with auto-fill, which means that
spaces are treated like enqueing NEWLINE_SPACE (essentiall a 'fill').public void setSharing(boolean sharing)
public int getPrettyPrintingMode()
setPrettyPrintingMode(int).public boolean isPrettyPrinting()
public void setPrettyPrinting(boolean mode)
setPrettyPrintingMode(mode?1:0).public void writeWordEnd()
writeWordStart().public void writeWordStart()
writeWordEnd(). Otherwise, do nothing.public void clearWordEnd()
public void write(int ch)
write in class java.io.Writerch - The character to write.public void write(java.lang.String str)
write in class java.io.Writerpublic void write(java.lang.String str,
int start,
int count)
write in class java.io.Writerstr - The string to usestart - Where to start in the stringcount - The number of character to write from the stringpublic void write(char[] str)
write in class java.io.Writerpublic void write(char[] str,
int start,
int count)
write in class java.io.Writerpublic int writePositionMarker(boolean grouping)
queueInts where this marker resides
it's used for back-reference lookup.writeBackReference(int)public void writeBackReference(int posn)
posn - The index in the queueInts array of the referenced
position marker.public void writePairEnd(java.lang.Integer posn)
posn - The index in the queueInts array of the referenced
position marker.public void writeEndOfExpression()
public void setIndentation(int column)
public int enqueue(int kind,
int size)
queueInts.
The kind and size parameters are packed into a 32-bit integer and then stored in the
QITEM_TYPE_AND_SIZE offset of this token's computed base address. If the
queueInts array is not big enough to hold the new token, two cases
arise. If we're not handling a shared structure, the queue is expanded, and
the old formatting tokens are moved to the high end of the queue, leaving
new space at the front. If we are handling shared structure, the queue
size is double, and we continue to enqueue items from the old queueSize.kind - The type of formatting tokensize - The size of this formatting tokenqueueIntspublic void enqueueNewline(int kind)
kind - The type of newline to enqueuepublic final void writeBreak(int kind)
public int enqueueIndent(char kind,
int amount)
public void addIndentation(int amount,
boolean current)
public void startLogicalBlock(java.lang.String prefix,
boolean perLine,
java.lang.String suffix)
public void endLogicalBlock()
public void endLogicalBlock(java.lang.String suffix)
protected int getMiserWidth()
public void lineAbbreviationHappened()
public void resolveBackReferences()
public void forcePrettyOutput()
throws java.io.IOException
java.io.IOExceptionpublic void flush()
flush in interface java.io.Flushableflush in class java.io.Writerpublic void close()
throws java.io.IOException
close in interface java.io.Closeableclose in interface java.lang.AutoCloseableclose in class java.io.Writerjava.io.IOExceptionpublic void closeThis()
throws java.io.IOException
java.io.IOExceptionpublic int getColumnNumber()
prettyPrintingMode > 0.public void setColumnNumber(int column)
public void clearBuffer()