30 TempFile(std::string
const& suffix =
".json") {
32 char tmp_dir[MAX_PATH];
33 GetTempPathA(MAX_PATH, tmp_dir);
34 char tmp_file[MAX_PATH];
35 GetTempFileNameA(tmp_dir,
"ppt", 0, tmp_file);
36 std::string base = tmp_file;
37 std::remove(base.c_str());
38 path_ = base + suffix;
39 std::ofstream touch(path_);
41 std::string tmpl =
"/tmp/ppforest2_XXXXXX" + suffix;
42 std::vector<char> tmpl_buf(tmpl.begin(), tmpl.end());
43 tmpl_buf.push_back(
'\0');
45 int fd = mkstemps(tmpl_buf.data(),
static_cast<int>(suffix.size()));
48 path_ = tmpl_buf.data();
57 std::remove(path_.c_str());
65 : path_(std::move(other.path_)) {
72 std::remove(path_.c_str());
74 path_ = std::move(other.path_);
81 std::string
const&
path()
const {
return path_; }
84 void clear()
const { std::remove(path_.c_str()); }
88 std::ifstream in(path_);
108 char tmp_dir[MAX_PATH];
109 GetTempPathA(MAX_PATH, tmp_dir);
110 char tmp_file[MAX_PATH];
111 GetTempFileNameA(tmp_dir,
"ppd", 0, tmp_file);
113 std::remove(tmp_file);
115 std::filesystem::create_directories(path_);
117 path_ =
"/tmp/ppforest2_dir_XXXXXX";
118 std::vector<char> buf(path_.begin(), path_.end());
120 char* result = mkdtemp(buf.data());
130 if (!path_.empty()) {
131 std::filesystem::remove_all(path_);
138 std::string
const&
path()
const {
return path_; }
141 std::string
file(std::string
const& name)
const {
return (std::filesystem::path(path_) / name).string(); }
std::string file(std::string const &name) const
Return a path inside this directory (file need not exist yet).
Definition TempFile.hpp:141
TempDir & operator=(TempDir const &)=delete
~TempDir()
Definition TempFile.hpp:129
TempDir(TempDir const &)=delete
std::string const & path() const
Definition TempFile.hpp:138
TempDir()
Definition TempFile.hpp:106
TempFile & operator=(TempFile const &)=delete
TempFile(std::string const &suffix=".json")
Definition TempFile.hpp:30
TempFile & operator=(TempFile &&other) noexcept
Definition TempFile.hpp:69
std::string read() const
Read the entire file contents as a string.
Definition TempFile.hpp:87
TempFile(TempFile &&other) noexcept
Definition TempFile.hpp:64
void clear() const
Remove the file so the path can be used as a fresh output target.
Definition TempFile.hpp:84
std::string const & path() const
Definition TempFile.hpp:81
~TempFile()
Definition TempFile.hpp:55
TempFile(TempFile const &)=delete