SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
safe_filesystem_entry.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <cassert>
13#include <filesystem>
14#include <system_error>
15
17
18namespace seqan3::detail
19{
20
34class safe_filesystem_entry
35{
36public:
40 safe_filesystem_entry() = delete;
41 safe_filesystem_entry(safe_filesystem_entry const &) = delete;
42 safe_filesystem_entry(safe_filesystem_entry &&) = default;
43 safe_filesystem_entry & operator=(safe_filesystem_entry const &) = delete;
44 safe_filesystem_entry & operator=(safe_filesystem_entry &&) = default;
45
49 safe_filesystem_entry(std::filesystem::path p) : entry(std::move(p))
50 {}
51
53 ~safe_filesystem_entry()
54 {
57
58 assert(!static_cast<bool>(ec));
59 }
61
70 bool remove()
71 {
72 return std::filesystem::remove(entry);
73 }
74
76 bool remove_no_throw() const noexcept
77 {
79 return std::filesystem::remove(entry, ec);
80 }
81
92 {
93 return std::filesystem::remove_all(entry);
94 }
95
96private:
99};
100
101} // namespace seqan3::detail
T move(T... args)
SeqAn specific customisations in the standard namespace.
Provides platform and dependency checks.
T remove_all(T... args)
Hide me