diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-12-04 18:21:35 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-12-04 18:21:35 +0000 |
commit | 9551a2cbe5fdf316c126a39ec310208c2121321f (patch) | |
tree | 7f50aa48f75b5561915f680e4f6e5681e8864e1c /Basic/FileManager.cpp | |
parent | 8448d38c4e8bd434f01410de5aa64a48adec5d24 (diff) |
Implemented serialization of FileEntry and DirectoryEntry.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44573 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Basic/FileManager.cpp')
-rw-r--r-- | Basic/FileManager.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Basic/FileManager.cpp b/Basic/FileManager.cpp index 0a51eca73f..691a63fc21 100644 --- a/Basic/FileManager.cpp +++ b/Basic/FileManager.cpp @@ -19,6 +19,8 @@ #include "clang/Basic/FileManager.h" #include "llvm/ADT/SmallString.h" +#include "llvm/Bitcode/Serialize.h" +#include "llvm/Bitcode/Deserialize.h" #include <iostream> using namespace clang; @@ -170,3 +172,34 @@ void FileManager::PrintStats() const { //std::cerr << PagesMapped << BytesOfPagesMapped << FSLookups; } + +//===----------------------------------------------------------------------===// +// Serialization. +//===----------------------------------------------------------------------===// + +void DirectoryEntry::Emit(llvm::Serializer& S) const { + S.EmitCStr(Name); +} + +void DirectoryEntry::Read(llvm::Deserializer& D) { + Name = D.ReadCStr(); +} + +void FileEntry::Emit(llvm::Serializer& S) const { + S.FlushRecord(); + S.EmitInt(Size); + S.EmitInt(ModTime); + S.EmitInt(UID); + S.EmitPtr(Dir); + S.EmitCStr(Name); +} + +void FileEntry::Read(llvm::Deserializer& D) { + Size = (off_t) D.ReadInt(); + ModTime = (time_t) D.ReadInt(); + D.ReadPtr<DirectoryEntry>(const_cast<DirectoryEntry*&>(Dir)); + Name = D.ReadCStr(); +} + + + |