summaryrefslogtreecommitdiffstats
path: root/src/build_log.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/build_log.h')
-rw-r--r--src/build_log.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/build_log.h b/src/build_log.h
index bb474fc..fc44854 100644
--- a/src/build_log.h
+++ b/src/build_log.h
@@ -25,7 +25,10 @@ using namespace std;
struct Edge;
-struct IsDead {
+/// Can answer questions about the manifest for the BuildLog.
+struct BuildLogUser {
+ /// Return if a given output no longer part of the build manifest.
+ /// This is only called during recompaction and doesn't have to be fast.
virtual bool IsPathDead(StringPiece s) = 0;
};
@@ -40,7 +43,7 @@ struct BuildLog {
BuildLog();
~BuildLog();
- bool OpenForWrite(const string& path, IsDead* is_dead, string* err); // XXX
+ bool OpenForWrite(const string& path, BuildLogUser& user, string* err);
bool RecordCommand(Edge* edge, int start_time, int end_time,
TimeStamp restat_mtime = 0);
void Close();
@@ -76,7 +79,7 @@ struct BuildLog {
bool WriteEntry(FILE* f, const LogEntry& entry);
/// Rewrite the known log entries, throwing away old data.
- bool Recompact(const string& path, IsDead* is_dead, string* err); // XXX
+ bool Recompact(const string& path, BuildLogUser& user, string* err);
typedef ExternalStringHashMap<LogEntry*>::Type Entries;
const Entries& entries() const { return entries_; }