diff options
author | Thiago Farina <tfarina@chromium.org> | 2011-08-10 12:47:32 (GMT) |
---|---|---|
committer | Thiago Farina <tfarina@chromium.org> | 2011-08-10 12:47:32 (GMT) |
commit | f8f63a4a6a88b96b3d7c71c50881c8658d8b4fe4 (patch) | |
tree | 18f832ff958d03564ec6faad988804ef70e997ac /src/disk_interface.h | |
parent | 667d16d123e7eb6d9525146c13bdc90f251e7fc9 (diff) | |
download | Ninja-f8f63a4a6a88b96b3d7c71c50881c8658d8b4fe4.zip Ninja-f8f63a4a6a88b96b3d7c71c50881c8658d8b4fe4.tar.gz Ninja-f8f63a4a6a88b96b3d7c71c50881c8658d8b4fe4.tar.bz2 |
Factor out DiskInterface class into its own source/header files.
This is a TODO in src/ninja_jumble.cc
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Diffstat (limited to 'src/disk_interface.h')
-rw-r--r-- | src/disk_interface.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/disk_interface.h b/src/disk_interface.h new file mode 100644 index 0000000..b8d9786 --- /dev/null +++ b/src/disk_interface.h @@ -0,0 +1,49 @@ +// Copyright 2011 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef NINJA_DISK_INTERFACE_H_ +#define NINJA_DISK_INTERFACE_H_ + +#include <string> + +/// Interface for accessing the disk. +/// +/// Abstract so it can be mocked out for tests. The real implementation +/// is RealDiskInterface. +struct DiskInterface { + virtual ~DiskInterface() {} + + /// stat() a file, returning the mtime, or 0 if missing and -1 on + /// other errors. + virtual int Stat(const std::string& path) = 0; + + /// Create a directory, returning false on failure. + virtual bool MakeDir(const std::string& path) = 0; + + /// Read a file to a string. Fill in |err| on error. + virtual std::string ReadFile(const std::string& path, std::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, + /// 1 if the file does not exist, and + /// -1 if an error occurs. + virtual int RemoveFile(const std::string& path) = 0; + + /// Create all the parent directories for path; like mkdir -p + /// `basename path`. + bool MakeDirs(const std::string& path); +}; + +#endif // NINJA_DISK_INTERFACE_H_ |