[cfe-commits] r44573 - in /cfe/trunk: Basic/FileManager.cpp include/clang/Basic/FileManager.h
Ted Kremenek
kremenek at apple.com
Tue Dec 4 10:21:36 PST 2007
Author: kremenek
Date: Tue Dec 4 12:21:35 2007
New Revision: 44573
URL: http://llvm.org/viewvc/llvm-project?rev=44573&view=rev
Log:
Implemented serialization of FileEntry and DirectoryEntry.
Modified:
cfe/trunk/Basic/FileManager.cpp
cfe/trunk/include/clang/Basic/FileManager.h
Modified: cfe/trunk/Basic/FileManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Basic/FileManager.cpp?rev=44573&r1=44572&r2=44573&view=diff
==============================================================================
--- cfe/trunk/Basic/FileManager.cpp (original)
+++ cfe/trunk/Basic/FileManager.cpp Tue Dec 4 12:21:35 2007
@@ -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();
+}
+
+
+
Modified: cfe/trunk/include/clang/Basic/FileManager.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/FileManager.h?rev=44573&r1=44572&r2=44573&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/FileManager.h (original)
+++ cfe/trunk/include/clang/Basic/FileManager.h Tue Dec 4 12:21:35 2007
@@ -15,6 +15,7 @@
#define LLVM_CLANG_FILEMANAGER_H
#include "llvm/ADT/StringMap.h"
+#include "llvm/Bitcode/SerializationFwd.h"
#include <map>
#include <string>
// FIXME: Enhance libsystem to support inode and other fields in stat.
@@ -31,6 +32,12 @@
public:
DirectoryEntry() : Name(0) {}
const char *getName() const { return Name; }
+
+ /// Emit - Emit this DirectoryEntry to Bitcode.
+ void Emit(llvm::Serializer& S) const;
+
+ /// Create - Reconsitute a DirectoryEntry object from Bitcode.
+ void Read(llvm::Deserializer& D);
};
/// FileEntry - Cached information about one file on the disk.
@@ -53,6 +60,13 @@
/// getDir - Return the directory the file lives in.
///
const DirectoryEntry *getDir() const { return Dir; }
+
+
+ /// Emit - Emit this FileEntry to Bitcode.
+ void Emit(llvm::Serializer& S) const;
+
+ /// Read - Reconsitute a FileEntry object from Bitcode.
+ void Read(llvm::Deserializer& D);
};
More information about the cfe-commits
mailing list