Implemented serialization of FileEntry and DirectoryEntry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44573 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Basic/FileManager.cpp b/Basic/FileManager.cpp
index 0a51eca..691a63f 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 @@
   
   //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();
+}
+
+
+