public class SourceFragmentContextNormal
extends java.lang.Object
CtElement
by the way that origin formatting is kept as much as possible.
There are two streams of source fragments
1) stream of origin source fragments
2) stream of tokens produced by DefaultJavaPrettyPrinter
in spaces between printing of child CtElement
s
Note: some fragments are optional and some are mandatory. For example:
<T> void method(T p);
and after remove of type parameter and method parameter....
void method();
The type parameter brackets were removed, while parameter brackets are kept.
Only DJPP knows whether it has to be displayed or not. So algorithm is like this:
Modifier and Type | Field and Description |
---|---|
protected ChangeResolver |
changeResolver |
protected int |
childFragmentIdx |
protected java.util.List<SourceFragment> |
childFragments |
protected MutableTokenWriter |
mutableTokenWriter |
protected java.util.List<java.lang.Runnable> |
separatorActions |
Constructor and Description |
---|
SourceFragmentContextNormal(MutableTokenWriter mutableTokenWriter,
ElementSourceFragment rootFragment,
ChangeResolver changeResolver) |
Modifier and Type | Method and Description |
---|---|
protected int |
findIFragmentIndexCorrespondingToEvent(PrinterEvent event)
Looks for the child token which fits to
PrinterEvent `event` |
protected int |
findIndexOfNextChildTokenByType(TokenType type)
looks for next child token which contains expected token type
|
protected int |
findIndexOfNextChildTokenByValue(java.lang.String token)
looks for next child token which contains exactly same token
|
protected int |
findIndexOfNextChildTokenOfElement(SourcePositionHolder element)
looks for next child token, which has element `element
|
protected int |
findIndexOfNextChildTokenOfRole(int start,
CtRole role)
looks for next child token which has role `role`
|
protected boolean |
hasNextChildToken() |
protected ModificationStatus |
isFragmentModified(SourceFragment fragment) |
boolean |
knowsHowToPrint(PrinterEvent event) |
void |
onFinished()
Called when printing using this context is going to finish
|
void |
onPush()
called when pushed on the stack
|
void |
print(PrinterEvent event)
Called when
DefaultJavaPrettyPrinter starts an operation |
protected void |
printOriginSpacesUntilFragmentIndex(int fromIndex,
int toIndex)
Prints origin whitespaces including comments which prefixes the fragment on index `index`,
starting with fragment on `fromIndex`
|
protected void |
printSpaces(int fromIndex,
int fragmentIndex)
Prints spaces before fragment with index `fragmentIndex`
|
protected void |
printStandardSpaces()
print all tokens, which represents white spaces
and then forget them, so we can collect next white spaces
|
protected void |
setChildFragmentIdx(int idx)
Remembers index of last processed fragment
|
int |
update(PrinterEvent event)
Update the internal state of this printer for this event but does not print anything.
|
protected final MutableTokenWriter mutableTokenWriter
protected final java.util.List<SourceFragment> childFragments
protected final ChangeResolver changeResolver
protected int childFragmentIdx
protected final java.util.List<java.lang.Runnable> separatorActions
public SourceFragmentContextNormal(MutableTokenWriter mutableTokenWriter, ElementSourceFragment rootFragment, ChangeResolver changeResolver)
mutableTokenWriter
- MutableTokenWriter
, which is used for printingrootFragment
- the ElementSourceFragment
, which represents whole elements. E.g. whole type or methodchangeResolver
- public boolean knowsHowToPrint(PrinterEvent event)
SourceFragmentPrinter.print(PrinterEvent)
after
having called this one.public void onFinished()
SourceFragmentPrinter
onFinished
in interface SourceFragmentPrinter
public void print(PrinterEvent event)
SourceFragmentPrinter
DefaultJavaPrettyPrinter
starts an operationprint
in interface SourceFragmentPrinter
event
- the DefaultJavaPrettyPrinter
eventpublic int update(PrinterEvent event)
SourceFragmentPrinter
update
in interface SourceFragmentPrinter
protected void printSpaces(int fromIndex, int fragmentIndex)
fragmentIndex
- index of fragment whose prefix spaces has to be printed or -1 if origin source fragment was not foundprotected ModificationStatus isFragmentModified(SourceFragment fragment)
fragment
- protected void printOriginSpacesUntilFragmentIndex(int fromIndex, int toIndex)
fromIndex
- index of first processed fragmenttoIndex
- index of first not processed fragment.protected void setChildFragmentIdx(int idx)
idx
- index of last processed fragmentprotected boolean hasNextChildToken()
protected int findIndexOfNextChildTokenByValue(java.lang.String token)
token
- String of searched tokenprotected int findIndexOfNextChildTokenByType(TokenType type)
type
- TokenType
of search tokenprotected int findIndexOfNextChildTokenOfRole(int start, CtRole role)
role
- CtRole
of searched tokenprotected int findIndexOfNextChildTokenOfElement(SourcePositionHolder element)
element
- element of searched tokenprotected int findIFragmentIndexCorrespondingToEvent(PrinterEvent event)
PrinterEvent
`event`event
- PrinterEvent
whose token it searches forPrinterEvent
or -1 if not foundprotected void printStandardSpaces()
public void onPush()
SourceFragmentPrinter
onPush
in interface SourceFragmentPrinter
Copyright © 2007–2021 Inria. All rights reserved.