org.eclipse.cdt.internal.formatter
Class Scribe

java.lang.Object
  extended by org.eclipse.cdt.internal.formatter.Scribe

public class Scribe
extends java.lang.Object

This class is responsible for dumping formatted source.

Since:
4.0

Field Summary
 int column
          one-based column
 Alignment currentAlignment
           
 Token currentToken
           
 int editsIndex
           
static java.lang.String EMPTY_STRING
           
 CodeFormatterVisitor formatter
           
 int indentationLevel
           
 int indentationSize
           
 int lastNumberOfNewLines
           
 int line
           
 Alignment memberAlignment
           
 boolean needSpace
           
 int numberOfIndentations
           
 int pageWidth
           
 boolean pendingSpace
           
 Scanner scanner
           
 int scannerEndPosition
           
 int tabChar
           
 int tabLength
           
 
Method Summary
 void addInsertEdit(int insertPosition, java.lang.String insertedString)
           
 void addReplaceEdit(int start, int end, java.lang.String replacement)
          Add a replace edit.
 void alignFragment(Alignment alignment, int fragmentIndex)
           
 void consumeNextToken()
           
 Alignment createAlignment(java.lang.String name, int mode, int count, int sourceRestart)
           
 Alignment createAlignment(java.lang.String name, int mode, int count, int sourceRestart, boolean adjust)
           
 Alignment createAlignment(java.lang.String name, int mode, int tieBreakRule, int count, int sourceRestart)
           
 Alignment createAlignment(java.lang.String name, int mode, int count, int sourceRestart, int continuationIndent, boolean adjust)
           
 Alignment createAlignment(java.lang.String name, int mode, int tieBreakRule, int count, int sourceRestart, int continuationIndent, boolean adjust)
           
 Alignment createMemberAlignment(java.lang.String name, int mode, int count, int sourceRestart)
           
 void enterAlignment(Alignment alignment)
           
 void enterMemberAlignment(Alignment alignment)
           
 void exitAlignment(Alignment alignment, boolean discardAlignment)
           
 void exitMemberAlignment(Alignment alignment)
           
 Alignment getAlignment(java.lang.String name)
           
 int getColumnIndentationLevel()
          Answer actual indentation level based on true column position
 java.lang.String getEmptyLines(int linesNumber)
           
 OptimizedReplaceEdit getLastEdit()
           
 java.lang.String getNewLine()
           
 int getNextIndentationLevel(int someColumn)
          Answer next indentation level based on column estimated position (if column is not indented, then use indentationLevel)
 org.eclipse.text.edits.TextEdit getRootEdit()
           
 void handleLineTooLong()
           
 void indent()
           
 void initializeScanner(char[] translationUnitSource)
           
 boolean printComment()
           
 boolean printCommentPreservingNewLines()
           
 void printEmptyLines(int linesNumber)
           
 void printEndOfTranslationUnit()
           
 void printModifiers()
           
 void printNewLine()
           
 void printNewLine(int insertPosition)
           
 void printNextToken(int expectedTokenType)
           
 void printNextToken(int[] expectedTokenTypes)
           
 void printNextToken(int[] expectedTokenTypes, boolean considerSpaceIfAny)
           
 void printNextToken(int expectedTokenType, boolean considerSpaceIfAny)
           
 void printRaw(int startOffset, int length)
           
 void printTrailingComment()
           
 void reset()
           
 void setSkipPositions(java.util.List list)
           
 boolean skipToToken(int expectedTokenType)
          Skip to the next occurrence of the given token type.
 void space()
           
 void startNewLine()
           
 java.lang.String toString()
           
 void unIndent()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EMPTY_STRING

public static final java.lang.String EMPTY_STRING
See Also:
Constant Field Values

column

public int column
one-based column


currentAlignment

public Alignment currentAlignment

currentToken

public Token currentToken

editsIndex

public int editsIndex

formatter

public CodeFormatterVisitor formatter

indentationLevel

public int indentationLevel

lastNumberOfNewLines

public int lastNumberOfNewLines

line

public int line

memberAlignment

public Alignment memberAlignment

needSpace

public boolean needSpace

pageWidth

public int pageWidth

pendingSpace

public boolean pendingSpace

scanner

public Scanner scanner

scannerEndPosition

public int scannerEndPosition

tabLength

public int tabLength

indentationSize

public int indentationSize

tabChar

public int tabChar

numberOfIndentations

public int numberOfIndentations
Method Detail

addInsertEdit

public final void addInsertEdit(int insertPosition,
                                java.lang.String insertedString)

addReplaceEdit

public final void addReplaceEdit(int start,
                                 int end,
                                 java.lang.String replacement)
Add a replace edit.

Parameters:
start - start offset (inclusive)
end - end offset (inclusive)
replacement - the replacement string

alignFragment

public void alignFragment(Alignment alignment,
                          int fragmentIndex)

consumeNextToken

public void consumeNextToken()

createAlignment

public Alignment createAlignment(java.lang.String name,
                                 int mode,
                                 int count,
                                 int sourceRestart)

createAlignment

public Alignment createAlignment(java.lang.String name,
                                 int mode,
                                 int count,
                                 int sourceRestart,
                                 boolean adjust)

createAlignment

public Alignment createAlignment(java.lang.String name,
                                 int mode,
                                 int tieBreakRule,
                                 int count,
                                 int sourceRestart)

createAlignment

public Alignment createAlignment(java.lang.String name,
                                 int mode,
                                 int count,
                                 int sourceRestart,
                                 int continuationIndent,
                                 boolean adjust)

createAlignment

public Alignment createAlignment(java.lang.String name,
                                 int mode,
                                 int tieBreakRule,
                                 int count,
                                 int sourceRestart,
                                 int continuationIndent,
                                 boolean adjust)

createMemberAlignment

public Alignment createMemberAlignment(java.lang.String name,
                                       int mode,
                                       int count,
                                       int sourceRestart)

enterAlignment

public void enterAlignment(Alignment alignment)

enterMemberAlignment

public void enterMemberAlignment(Alignment alignment)

exitAlignment

public void exitAlignment(Alignment alignment,
                          boolean discardAlignment)

exitMemberAlignment

public void exitMemberAlignment(Alignment alignment)

getAlignment

public Alignment getAlignment(java.lang.String name)

getColumnIndentationLevel

public int getColumnIndentationLevel()
Answer actual indentation level based on true column position

Returns:
int

getEmptyLines

public java.lang.String getEmptyLines(int linesNumber)

getLastEdit

public OptimizedReplaceEdit getLastEdit()

getNewLine

public java.lang.String getNewLine()

getNextIndentationLevel

public int getNextIndentationLevel(int someColumn)
Answer next indentation level based on column estimated position (if column is not indented, then use indentationLevel)


getRootEdit

public org.eclipse.text.edits.TextEdit getRootEdit()

handleLineTooLong

public void handleLineTooLong()

indent

public void indent()

initializeScanner

public void initializeScanner(char[] translationUnitSource)
Parameters:
translationUnitSource -

setSkipPositions

public void setSkipPositions(java.util.List list)
Parameters:
list -

printRaw

public void printRaw(int startOffset,
                     int length)

printEndOfTranslationUnit

public void printEndOfTranslationUnit()

printComment

public boolean printComment()

printEmptyLines

public void printEmptyLines(int linesNumber)

startNewLine

public void startNewLine()

printNewLine

public void printNewLine()

printNewLine

public void printNewLine(int insertPosition)

printNextToken

public void printNextToken(int expectedTokenType)

printNextToken

public void printNextToken(int expectedTokenType,
                           boolean considerSpaceIfAny)

printNextToken

public void printNextToken(int[] expectedTokenTypes)

printNextToken

public void printNextToken(int[] expectedTokenTypes,
                           boolean considerSpaceIfAny)

printTrailingComment

public void printTrailingComment()

reset

public void reset()

space

public void space()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

unIndent

public void unIndent()

printModifiers

public void printModifiers()

skipToToken

public boolean skipToToken(int expectedTokenType)
Skip to the next occurrence of the given token type. If successful, the next token will be the epxected token, otherwise the scanner position is left unchanged.

Parameters:
expectedTokenType -
Returns:
true if a matching token was skipped to

printCommentPreservingNewLines

public boolean printCommentPreservingNewLines()