diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-02-24 03:15:25 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-02-24 03:15:25 +0000 |
commit | 6bb816a3b895e9c983d89b22d510dca58a0eb75e (patch) | |
tree | b31ff175779e39b12b01ed18e758c012cf8ac641 /include/clang/Basic/FileManager.h | |
parent | 10c5fa3b17a782e3a2d047cac9835af0fd25bbfa (diff) |
In FileManager: use full paths to unique files and directories on Windows,
since inodes are bogus abstraction on that platform.
Patch by Argiris Kirtzidis!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47535 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/FileManager.h')
-rw-r--r-- | include/clang/Basic/FileManager.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/include/clang/Basic/FileManager.h b/include/clang/Basic/FileManager.h index a73d3949f6..1b4ca81c39 100644 --- a/include/clang/Basic/FileManager.h +++ b/include/clang/Basic/FileManager.h @@ -48,6 +48,8 @@ class FileEntry { friend class FileManager; public: FileEntry(dev_t device, ino_t inode) : Name(0), Device(device), Inode(inode){} + // Add a default constructor for use with llvm::StringMap + FileEntry() : Name(0), Device(0), Inode(0) {} const char *getName() const { return Name; } off_t getSize() const { return Size; } @@ -72,11 +74,15 @@ public: /// names (e.g. symlinked) will be treated as a single file. /// class FileManager { - /// UniqueDirs/UniqueFiles - Cache from ID's to existing directories/files. + + class UniqueDirContainer; + class UniqueFileContainer; + + /// UniqueDirs/UniqueFiles - Cache for existing directories/files. /// - std::map<std::pair<dev_t, ino_t>, DirectoryEntry> UniqueDirs; - std::set<FileEntry> UniqueFiles; - + UniqueDirContainer &UniqueDirs; + UniqueFileContainer &UniqueFiles; + /// DirEntries/FileEntries - This is a cache of directory/file entries we have /// looked up. The actual Entry is owned by UniqueFiles/UniqueDirs above. /// @@ -91,10 +97,8 @@ class FileManager { unsigned NumDirLookups, NumFileLookups; unsigned NumDirCacheMisses, NumFileCacheMisses; public: - FileManager() : DirEntries(64), FileEntries(64), NextFileUID(0) { - NumDirLookups = NumFileLookups = 0; - NumDirCacheMisses = NumFileCacheMisses = 0; - } + FileManager(); + ~FileManager(); /// getDirectory - Lookup, cache, and verify the specified directory. This /// returns null if the directory doesn't exist. |