Go to the documentation of this file.
14 #ifndef LLVM_CLANG_LEX_MULTIPLEINCLUDEOPT_H
15 #define LLVM_CLANG_LEX_MULTIPLEINCLUDEOPT_H
39 bool ImmediatelyAfterTopLevelIfndef;
46 bool DidMacroExpansion;
59 ReadAnyTokens =
false;
60 ImmediatelyAfterTopLevelIfndef =
false;
61 DidMacroExpansion =
false;
63 DefinedMacro =
nullptr;
75 ImmediatelyAfterTopLevelIfndef =
false;
89 ImmediatelyAfterTopLevelIfndef =
false;
90 DefinedMacro =
nullptr;
102 return ImmediatelyAfterTopLevelIfndef;
107 ReadAnyTokens =
true;
108 ImmediatelyAfterTopLevelIfndef =
false;
131 if (DidMacroExpansion)
135 ReadAnyTokens =
true;
136 ImmediatelyAfterTopLevelIfndef =
true;
157 ReadAnyTokens =
false;
158 ImmediatelyAfterTopLevelIfndef =
false;
bool getImmediatelyAfterTopLevelIfndef() const
getImmediatelyAfterTopLevelIfndef - returns true if the last directive was an #ifndef at the beginnin...
void EnterTopLevelConditional()
Invoked when a top level conditional (except #ifndef) is found.
Encodes a location in the source.
void SetDefinedMacro(IdentifierInfo *M, SourceLocation Loc)
void ExpandedMacro()
ExpandedMacro - When a macro is expanded with this lexer as the current buffer, this method is called...
Implements the simple state machine that the Lexer class uses to detect files subject to the 'multipl...
void Invalidate()
Invalidate - Permanently mark this file as not being suitable for the include-file optimization.
bool getHasReadAnyTokensVal() const
getHasReadAnyTokensVal - This is used for the #ifndef handshake at the top of the file when reading p...
const IdentifierInfo * GetDefinedMacro() const
If the ControllingMacro is followed by a macro definition, return the macro that was defined.
void EnterTopLevelIfndef(const IdentifierInfo *M, SourceLocation Loc)
Called when entering a top-level #ifndef directive (or the "\#if !defined" equivalent) without any pr...
SourceLocation GetDefinedLocation() const
const IdentifierInfo * GetControllingMacroAtEndOfFile() const
Once the entire file has been lexed, if there is a controlling macro, return it.
One of these records is kept for each identifier that is lexed.
SourceLocation GetMacroLocation() const
void ExitTopLevelConditional()
Called when the lexer exits the top-level conditional.
void resetImmediatelyAfterTopLevelIfndef()