Package com.igormaznitsa.jcp.context
Class PreprocessingState
- java.lang.Object
-
- com.igormaznitsa.jcp.context.PreprocessingState
-
public final class PreprocessingState extends java.lang.Object
The class describes a preprocessor state also it contains inside buffers and save data on disk
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PreprocessingState.ExcludeIfInfo
static class
PreprocessingState.PrinterType
-
Field Summary
Fields Modifier and Type Field Description private TextFileDataContainer
activeIf
private TextFileDataContainer
activeWhile
private PreprocessorContext
context
private ResetablePrinter
currentPrinter
private java.util.LinkedList<PreprocessingState.ExcludeIfInfo>
deferredExcludeStack
static FilePositionInfo[]
EMPTY_STACK
private java.lang.String
globalInCharacterEncoding
private java.lang.String
globalOutCharacterEncoding
private java.util.LinkedList<TextFileDataContainer>
ifStack
private java.util.LinkedList<TextFileDataContainer>
includeStack
private java.lang.String
lastReadString
static int
MAX_WRITE_BUFFER_SIZE
private ResetablePrinter
normalPrinter
private boolean
overrideOnlyIfContentChanged
private ResetablePrinter
postfixPrinter
private ResetablePrinter
prefixPrinter
private java.util.EnumSet<PreprocessingFlag>
preprocessingFlags
private FileInfoContainer
rootFileInfo
private TextFileDataContainer
rootReference
private java.util.LinkedList<TextFileDataContainer>
whileStack
-
Constructor Summary
Constructors Constructor Description PreprocessingState(PreprocessorContext context, FileInfoContainer rootFile, TextFileDataContainer rootContainer, java.lang.String inEncoding, java.lang.String outEncoding, boolean overrideOnlyIfContentChanged)
PreprocessingState(PreprocessorContext context, FileInfoContainer rootFile, java.lang.String inEncoding, java.lang.String outEncoding, boolean overrideOnlyIfContentChanged)
-
Method Summary
-
-
-
Field Detail
-
EMPTY_STACK
public static final FilePositionInfo[] EMPTY_STACK
-
MAX_WRITE_BUFFER_SIZE
public static final int MAX_WRITE_BUFFER_SIZE
- See Also:
- Constant Field Values
-
globalInCharacterEncoding
private final java.lang.String globalInCharacterEncoding
-
globalOutCharacterEncoding
private final java.lang.String globalOutCharacterEncoding
-
rootReference
private final TextFileDataContainer rootReference
-
rootFileInfo
private final FileInfoContainer rootFileInfo
-
whileStack
private final java.util.LinkedList<TextFileDataContainer> whileStack
-
ifStack
private final java.util.LinkedList<TextFileDataContainer> ifStack
-
includeStack
private final java.util.LinkedList<TextFileDataContainer> includeStack
-
deferredExcludeStack
private final java.util.LinkedList<PreprocessingState.ExcludeIfInfo> deferredExcludeStack
-
prefixPrinter
private final ResetablePrinter prefixPrinter
-
postfixPrinter
private final ResetablePrinter postfixPrinter
-
normalPrinter
private final ResetablePrinter normalPrinter
-
overrideOnlyIfContentChanged
private final boolean overrideOnlyIfContentChanged
-
currentPrinter
private ResetablePrinter currentPrinter
-
preprocessingFlags
private final java.util.EnumSet<PreprocessingFlag> preprocessingFlags
-
activeIf
private TextFileDataContainer activeIf
-
activeWhile
private TextFileDataContainer activeWhile
-
lastReadString
private java.lang.String lastReadString
-
context
private final PreprocessorContext context
-
-
Constructor Detail
-
PreprocessingState
PreprocessingState(PreprocessorContext context, FileInfoContainer rootFile, java.lang.String inEncoding, java.lang.String outEncoding, boolean overrideOnlyIfContentChanged) throws java.io.IOException
- Throws:
java.io.IOException
-
PreprocessingState
PreprocessingState(PreprocessorContext context, FileInfoContainer rootFile, TextFileDataContainer rootContainer, java.lang.String inEncoding, java.lang.String outEncoding, boolean overrideOnlyIfContentChanged)
-
-
Method Detail
-
getLastReadString
public java.lang.String getLastReadString()
-
pushExcludeIfData
public void pushExcludeIfData(FileInfoContainer infoContainer, java.lang.String excludeIfCondition, int stringIndex)
-
popAllExcludeIfInfoData
public java.util.List<PreprocessingState.ExcludeIfInfo> popAllExcludeIfInfoData()
-
popExcludeIfData
public PreprocessingState.ExcludeIfInfo popExcludeIfData()
-
getPreprocessingFlags
public java.util.Set<PreprocessingFlag> getPreprocessingFlags()
-
getPrinter
public ResetablePrinter getPrinter() throws java.io.IOException
- Throws:
java.io.IOException
-
getRootTextContainer
public TextFileDataContainer getRootTextContainer()
-
openFile
public TextFileDataContainer openFile(java.io.File file) throws java.io.IOException
- Throws:
java.io.IOException
-
peekFile
public TextFileDataContainer peekFile()
-
getCurrentIncludeStack
java.util.List<TextFileDataContainer> getCurrentIncludeStack()
-
makeIncludeStack
public FilePositionInfo[] makeIncludeStack()
-
popTextContainer
public TextFileDataContainer popTextContainer()
-
getRootFileInfo
public FileInfoContainer getRootFileInfo()
-
isIncludeStackEmpty
public boolean isIncludeStackEmpty()
-
isOnlyRootOnStack
public boolean isOnlyRootOnStack()
-
cloneTopTextDataContainer
private TextFileDataContainer cloneTopTextDataContainer(boolean useLastReadStringIndex)
-
popWhile
public PreprocessingState popWhile()
-
pushWhile
public PreprocessingState pushWhile(boolean makeActive)
-
peekWhile
public TextFileDataContainer peekWhile()
-
hasReadLineNextLineInEnd
public boolean hasReadLineNextLineInEnd()
-
nextLine
public java.lang.String nextLine()
-
goToString
public PreprocessingState goToString(int stringIndex)
-
pushIf
public PreprocessingState pushIf(boolean makeActive)
-
popAllIFUntilContainerWithFile
public void popAllIFUntilContainerWithFile(TextFileDataContainer container)
-
popIf
public PreprocessingState popIf()
-
isAtActiveWhile
public boolean isAtActiveWhile()
-
isAtActiveIf
public boolean isAtActiveIf()
-
isDirectiveCanBeProcessedIgnoreBreak
public boolean isDirectiveCanBeProcessedIgnoreBreak()
-
isDirectiveCanBeProcessed
public boolean isDirectiveCanBeProcessed()
-
peekIf
public TextFileDataContainer peekIf()
-
isIfStackEmpty
public boolean isIfStackEmpty()
-
isWhileStackEmpty
public boolean isWhileStackEmpty()
-
init
private void init()
-
setPrinter
public void setPrinter(PreprocessingState.PrinterType type)
-
resetPrinters
public void resetPrinters()
-
saveBuffersToStreams
public void saveBuffersToStreams(java.io.OutputStream prefix, java.io.OutputStream normal, java.io.OutputStream postfix) throws java.io.IOException
- Throws:
java.io.IOException
-
saveBuffersToFile
public boolean saveBuffersToFile(java.io.File outFile, boolean removeComments) throws java.io.IOException
- Throws:
java.io.IOException
-
writePrinterBuffers
public java.io.Writer writePrinterBuffers(java.io.Writer writer) throws java.io.IOException
- Throws:
java.io.IOException
-
makeException
public PreprocessorException makeException(java.lang.String message, java.lang.String causeString, java.lang.Throwable cause)
-
dispose
public void dispose()
-
-