zcov: / include/clang/Rewrite/TokenRewriter.h


Files: 1 Branches Taken: 0.0% 0 / 2
Generated: 2010-02-10 01:31 Branches Executed: 0.0% 0 / 2
Line Coverage: 0.0% 0 / 5


Programs: 2 Runs 5794


       1                 : //===--- TokenRewriter.h - Token-based Rewriter -----------------*- C++ -*-===//
       2                 : //
       3                 : //                     The LLVM Compiler Infrastructure
       4                 : //
       5                 : // This file is distributed under the University of Illinois Open Source
       6                 : // License. See LICENSE.TXT for details.
       7                 : //
       8                 : //===----------------------------------------------------------------------===//
       9                 : //
      10                 : //  This file defines the TokenRewriter class, which is used for code
      11                 : //  transformations.
      12                 : //
      13                 : //===----------------------------------------------------------------------===//
      14                 : 
      15                 : #ifndef LLVM_CLANG_TOKENREWRITER_H
      16                 : #define LLVM_CLANG_TOKENREWRITER_H
      17                 : 
      18                 : #include "clang/Basic/SourceLocation.h"
      19                 : #include "llvm/ADT/OwningPtr.h"
      20                 : #include <list>
      21                 : #include <map>
      22                 : 
      23                 : namespace clang {
      24                 :   class Token;
      25                 :   class LangOptions;
      26                 :   class ScratchBuffer;
      27                 : 
      28                 :   class TokenRewriter {
      29                 :     /// TokenList - This is the list of raw tokens that make up this file.  Each
      30                 :     /// of these tokens has a unique SourceLocation, which is a FileID.
      31                 :     std::list<Token> TokenList;
      32                 : 
      33                 :     /// TokenRefTy - This is the type used to refer to a token in the TokenList.
      34                 :     typedef std::list<Token>::iterator TokenRefTy;
      35                 : 
      36                 :     /// TokenAtLoc - This map indicates which token exists at a specific
      37                 :     /// SourceLocation.  Since each token has a unique SourceLocation, this is a
      38                 :     /// one to one map.  The token can return its own location directly, to map
      39                 :     /// backwards.
      40                 :     std::map<SourceLocation, TokenRefTy> TokenAtLoc;
      41                 : 
      42                 :     /// ScratchBuf - This is the buffer that we create scratch tokens from.
      43                 :     ///
      44                 :     llvm::OwningPtr<ScratchBuffer> ScratchBuf;
      45                 : 
      46                 :     TokenRewriter(const TokenRewriter&);  // DO NOT IMPLEMENT
      47                 :     void operator=(const TokenRewriter&); // DO NOT IMPLEMENT.
      48                 :   public:
      49                 :     /// TokenRewriter - This creates a TokenRewriter for the file with the
      50                 :     /// specified FileID.
      51                 :     TokenRewriter(FileID FID, SourceManager &SM, const LangOptions &LO);
      52                 :     ~TokenRewriter();
      53                 : 
      54                 :     typedef std::list<Token>::const_iterator token_iterator;
      55                0:     token_iterator token_begin() const { return TokenList.begin(); }
      56                0:     token_iterator token_end() const { return TokenList.end(); }
      57                 : 
      58                 : 
      59                 :     token_iterator AddTokenBefore(token_iterator I, const char *Val);
      60                0:     token_iterator AddTokenAfter(token_iterator I, const char *Val) {
                        0: branch 2 not taken
                        0: branch 3 not taken
      61                0:       assert(I != token_end() && "Cannot insert after token_end()!");
      62                0:       return AddTokenBefore(++I, Val);
      63                 :     }
      64                 : 
      65                 :   private:
      66                 :     /// RemapIterator - Convert from token_iterator (a const iterator) to
      67                 :     /// TokenRefTy (a non-const iterator).
      68                 :     TokenRefTy RemapIterator(token_iterator I);
      69                 : 
      70                 :     /// AddToken - Add the specified token into the Rewriter before the other
      71                 :     /// position.
      72                 :     TokenRefTy AddToken(const Token &T, TokenRefTy Where);
      73                 :   };
      74                 : 
      75                 : 
      76                 : 
      77                 : } // end namespace clang
      78                 : 
      79                 : #endif

Generated: 2010-02-10 01:31 by zcov