1 // Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROMIUMOS_WIDE_PROFILING_SCOPED_TEMP_PATH_H_
6 #define CHROMIUMOS_WIDE_PROFILING_SCOPED_TEMP_PATH_H_
7 
8 #include <string>
9 
10 #include "base/macros.h"
11 
12 #include "compat/string.h"
13 
14 namespace quipper {
15 
16 // Used to create a temporary file or directory.
17 class ScopedTempPath {
18  public:
19   ScopedTempPath() {}
20   // The temporary path will be removed when the object is destroyed.
21   virtual ~ScopedTempPath();
22   const string& path() const { return path_; }
23 
24  protected:
25   string path_;
26 
27  private:
28   DISALLOW_COPY_AND_ASSIGN(ScopedTempPath);
29 };
30 
31 class ScopedTempFile : public ScopedTempPath {
32  public:
33   // Create a temporary file.  If successful, the path will be stored in
34   // |path_|.  If not, |path_| will be an empty string.
35   ScopedTempFile();
36   // A temporary file is created using mkstemp() by adding "XXXXXX" to
37   // |prefix|.
38   explicit ScopedTempFile(string prefix);
39 };
40 
41 class ScopedTempDir : public ScopedTempPath {
42  public:
43   // Create a temporary directory.  If successful, the path will be stored in
44   // |path_|.  If not, |path_| will be an empty string.
45   ScopedTempDir();
46   // A temporary file is created using mkdtemp() by adding "XXXXXX" to
47   // |prefix|.
48   explicit ScopedTempDir(string prefix);
49 };
50 
51 }  // namespace quipper
52 
53 #endif  // CHROMIUMOS_WIDE_PROFILING_SCOPED_TEMP_PATH_H_
54