summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-02-03 18:18:37 (GMT)
committerBrad King <brad.king@kitware.com>2016-02-03 18:19:42 (GMT)
commitf9487ac7971a668ddf142d5adc741f789c7bbb68 (patch)
treec46c5c7d4fdd747a6e7b1f1a4ed251f6020c35d7
parent94086e990cac21451a98d949afec0b705b1c4d88 (diff)
downloadNinja-f9487ac7971a668ddf142d5adc741f789c7bbb68.zip
Ninja-f9487ac7971a668ddf142d5adc741f789c7bbb68.tar.gz
Ninja-f9487ac7971a668ddf142d5adc741f789c7bbb68.tar.bz2
Factor a `FileReader` base class out of `DiskInterface`
Some clients will need only the ability to read files, so provide this as a more narrow interface than the full disk interface.
-rw-r--r--src/disk_interface.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/disk_interface.h b/src/disk_interface.h
index b61d192..94f25dc 100644
--- a/src/disk_interface.h
+++ b/src/disk_interface.h
@@ -21,13 +21,20 @@ using namespace std;
#include "timestamp.h"
+/// Interface for reading files from disk. See DiskInterface for details.
+/// This base offers the minimum interface needed just to read files.
+struct FileReader {
+ virtual ~FileReader() {}
+
+ /// Read a file to a string. Fill in |err| on error.
+ virtual string ReadFile(const string& path, string* err) = 0;
+};
+
/// Interface for accessing the disk.
///
/// Abstract so it can be mocked out for tests. The real implementation
/// is RealDiskInterface.
-struct DiskInterface {
- virtual ~DiskInterface() {}
-
+struct DiskInterface: public FileReader {
/// stat() a file, returning the mtime, or 0 if missing and -1 on
/// other errors.
virtual TimeStamp Stat(const string& path, string* err) const = 0;
@@ -39,9 +46,6 @@ struct DiskInterface {
/// Returns true on success, false on failure
virtual bool WriteFile(const string& path, const string& contents) = 0;
- /// Read a file to a string. Fill in |err| on error.
- virtual string ReadFile(const string& path, string* err) = 0;
-
/// Remove the file named @a path. It behaves like 'rm -f path' so no errors
/// are reported if it does not exists.
/// @returns 0 if the file has been removed,