zcov: / include/clang/Lex/HeaderMap.h


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


Programs: 2 Runs 3018


       1                 : //===--- HeaderMap.h - A file that acts like dir of symlinks ----*- 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 HeaderMap interface.
      11                 : //
      12                 : //===----------------------------------------------------------------------===//
      13                 : 
      14                 : #ifndef LLVM_CLANG_LEX_HEADERMAP_H
      15                 : #define LLVM_CLANG_LEX_HEADERMAP_H
      16                 : 
      17                 : namespace llvm {
      18                 :   class MemoryBuffer;
      19                 :   class StringRef;
      20                 : }
      21                 : namespace clang {
      22                 :   class FileEntry;
      23                 :   class FileManager;
      24                 :   struct HMapBucket;
      25                 :   struct HMapHeader;
      26                 : 
      27                 : /// This class represents an Apple concept known as a 'header map'.  To the
      28                 : /// #include file resolution process, it basically acts like a directory of
      29                 : /// symlinks to files.  Its advantages are that it is dense and more efficient
      30                 : /// to create and process than a directory of symlinks.
      31                 : class HeaderMap {
      32                 :   HeaderMap(const HeaderMap&); // DO NOT IMPLEMENT
      33                 :   void operator=(const HeaderMap&); // DO NOT IMPLEMENT
      34                 : 
      35                 :   const llvm::MemoryBuffer *FileBuffer;
      36                 :   bool NeedsBSwap;
      37                 : 
      38                0:   HeaderMap(const llvm::MemoryBuffer *File, bool BSwap)
      39                0:     : FileBuffer(File), NeedsBSwap(BSwap) {
      40                0:   }
      41                 : public:
      42                 :   ~HeaderMap();
      43                 : 
      44                 :   /// HeaderMap::Create - This attempts to load the specified file as a header
      45                 :   /// map.  If it doesn't look like a HeaderMap, it gives up and returns null.
      46                 :   static const HeaderMap *Create(const FileEntry *FE);
      47                 : 
      48                 :   /// LookupFile - Check to see if the specified relative filename is located in
      49                 :   /// this HeaderMap.  If so, open it and return its FileEntry.
      50                 :   const FileEntry *LookupFile(llvm::StringRef Filename, FileManager &FM) const;
      51                 : 
      52                 :   /// getFileName - Return the filename of the headermap.
      53                 :   const char *getFileName() const;
      54                 : 
      55                 :   /// dump - Print the contents of this headermap to stderr.
      56                 :   void dump() const;
      57                 : 
      58                 : private:
      59                 :   unsigned getEndianAdjustedWord(unsigned X) const;
      60                 :   const HMapHeader &getHeader() const;
      61                 :   HMapBucket getBucket(unsigned BucketNo) const;
      62                 :   const char *getString(unsigned StrTabIdx) const;
      63                 : };
      64                 : 
      65                 : } // end namespace clang.
      66                 : 
      67                 : #endif

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