summaryrefslogtreecommitdiffstats
path: root/clang/Basic/FileManager.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-12-04 18:21:35 +0000
committerTed Kremenek <kremenek@apple.com>2007-12-04 18:21:35 +0000
commitf7260b191c49d7759bccabaaa79497d3d8512dd9 (patch)
tree2afc0b4bca14ac884c873e1f5551e816258c104b /clang/Basic/FileManager.cpp
parent0c2bea29094f7d283a56a7abb81b68e9cfdeb84a (diff)
downloadbcm5719-llvm-f7260b191c49d7759bccabaaa79497d3d8512dd9.tar.gz
bcm5719-llvm-f7260b191c49d7759bccabaaa79497d3d8512dd9.zip
Implemented serialization of FileEntry and DirectoryEntry.
llvm-svn: 44573
Diffstat (limited to 'clang/Basic/FileManager.cpp')
-rw-r--r--clang/Basic/FileManager.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/clang/Basic/FileManager.cpp b/clang/Basic/FileManager.cpp
index 0a51eca73fd..691a63fc216 100644
--- a/clang/Basic/FileManager.cpp
+++ b/clang/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();
+}
+
+
+
OpenPOWER on IntegriCloud