]> granicus.if.org Git - clang/commitdiff
- Default initialize ParsingPreprocessorDirective, ParsingFilename, and
authorTed Kremenek <kremenek@apple.com>
Thu, 20 Nov 2008 01:29:45 +0000 (01:29 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 20 Nov 2008 01:29:45 +0000 (01:29 +0000)
  LexingRawMode in the ctor of PreprocessorLexer.

- PTHLexer: Use "LastToken" instead of "NumToken"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59690 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Lex/PTHLexer.h
include/clang/Lex/PreprocessorLexer.h
lib/Lex/PTHLexer.cpp
lib/Lex/PreprocessorLexer.cpp

index da1db2d165114c605c924a2a8a47e9c1d5d38018..96049b74f2a17ad41f5a27f69905fd36999f43b7 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_CLANG_PTHLexer_H
-#define LLVM_CLANG_PTHLexer_H
+#ifndef LLVM_CLANG_PTHLEXER_H
+#define LLVM_CLANG_PTHLEXER_H
 
 #include "clang/Lex/PreprocessorLexer.h"
 
 namespace clang {
   
 class PTHLexer : public PreprocessorLexer {
-  /// FileLoc - Location for the start of the file.
-  ///
-  SourceLocation FileLoc;
-  
   /// Tokens - This is the pointer to an array of tokens that the macro is
   /// defined to, with arguments expanded for function-like macros.  If this is
   /// a token stream, these are the tokens we are returning.
   const Token *Tokens;
   
-  /// NumTokens - This is the length of the Tokens array.
-  ///
-  unsigned NumTokens;
+  /// LastTokenIdx - The index of the last token in Tokens.  This token
+  ///  will be an eof token.
+  unsigned LastToken;
   
-  /// CurToken - This is the next token that Lex will return.
-  ///
+  /// CurToken - This is the index of the next token that Lex will return.
   unsigned CurToken;
         
   PTHLexer(const PTHLexer&);  // DO NOT IMPLEMENT
@@ -51,12 +46,6 @@ public:
   
   void setEOF(Token &Tok);
   
-  /// getFileLoc - Return the File Location for the file we are lexing out of.
-  /// The physical location encodes the location where the characters come from,
-  /// the virtual location encodes where we should *claim* the characters came
-  /// from.  Currently this is only used by _Pragma handling.
-  SourceLocation getFileLoc() const { return FileLoc; }
-  
   /// DiscardToEndOfLine - Read the rest of the current preprocessor line as an
   /// uninterpreted string.  This switches the lexer out of directive mode.
   void DiscardToEndOfLine();
index df8049e214eec32fb3472409f00b8ad8619a3b3c..5d976ff08d54e14cf1b9993fbbd347e7a7c7c1c4 100644 (file)
@@ -68,7 +68,12 @@ protected:
   friend class Preprocessor;
   
   PreprocessorLexer(Preprocessor* pp, SourceLocation L);
-  PreprocessorLexer() : PP(0), FileID(0) {}
+
+  PreprocessorLexer()
+    : PP(0), FileID(0),
+      ParsingPreprocessorDirective(false),
+      ParsingFilename(false),
+      LexingRawMode(false) {}
   
   virtual ~PreprocessorLexer();
   
index 5adcd9f6a1427a8c0ab18d44b7ab07c3fac7ce85..936a03ac0f0aa151a25f57a7e61ea44bc06a059b 100644 (file)
 using namespace clang;
 
 PTHLexer::PTHLexer(Preprocessor& pp, SourceLocation fileloc,
-                   const Token *TokArray, unsigned NumToks)
-  : PreprocessorLexer(&pp, fileloc), FileLoc(fileloc),
-    Tokens(TokArray), NumTokens(NumToks), CurToken(0) {
+                   const Token *TokArray, unsigned NumTokens)
+  : PreprocessorLexer(&pp, fileloc),
+    Tokens(TokArray),
+    LastToken(NumTokens - 1),
+    CurToken(0) {
 
-  assert (Tokens[NumTokens-1].is(tok::eof));
-  --NumTokens;
-    
-  LexingRawMode = false;
-  ParsingPreprocessorDirective = false;
-  ParsingFilename = false;
+  assert (NumTokens >= 1);
+  assert (Tokens[LastToken].is(tok::eof));
 }
 
 void PTHLexer::Lex(Token& Tok) {
 
-  if (CurToken == NumTokens) {    
+  if (CurToken == LastToken) {    
     // If we hit the end of the file while parsing a preprocessor directive,
     // end the preprocessor directive first.  The next token returned will
     // then be the end of file.
@@ -73,8 +71,7 @@ void PTHLexer::Lex(Token& Tok) {
 }
 
 void PTHLexer::setEOF(Token& Tok) {
-  Tok = Tokens[NumTokens]; // NumTokens is already adjusted, so this isn't
-                           // an overflow.
+  Tok = Tokens[LastToken];
 }
 
 void PTHLexer::DiscardToEndOfLine() {
@@ -82,17 +79,17 @@ void PTHLexer::DiscardToEndOfLine() {
          "Must be in a preprocessing directive!");
 
   // Already at end-of-file?
-  if (CurToken == NumTokens)
+  if (CurToken == LastToken)
     return;
 
   // Find the first token that is not the start of the *current* line.
-  for ( ++CurToken; CurToken != NumTokens ; ++CurToken )
+  for ( ++CurToken; CurToken != LastToken ; ++CurToken )
     if (Tokens[CurToken].isAtStartOfLine())
       return;
 }
 
 unsigned PTHLexer::isNextPPTokenLParen() {  
-  if (CurToken == NumTokens)
+  if (CurToken == LastToken)
     return 2;
   
   return Tokens[CurToken].is(tok::l_paren);
index 2ce181ef83a2afb17c48dd9ede4f0af9f9daa3bb..1916f298dbda69e24c0319a725c96df180a09d3d 100644 (file)
 using namespace clang;
 
 PreprocessorLexer::PreprocessorLexer(Preprocessor* pp, SourceLocation L)
-  :  PP(pp), FileID(pp->getSourceManager().getPhysicalLoc(L).getFileID()) {}
+  :  PP(pp), FileID(pp->getSourceManager().getPhysicalLoc(L).getFileID()),
+     ParsingPreprocessorDirective(false),
+     ParsingFilename(false),
+     LexingRawMode(false) {}
 
 PreprocessorLexer::~PreprocessorLexer() {}