Sharg 1.1.0
The argument parser for bio-c++ tools.
 
Loading...
Searching...
No Matches
safe_filesystem_entry.hpp
Go to the documentation of this file.
1// --------------------------------------------------------------------------------------------------------
2// Copyright (c) 2006-2023, Knut Reinert & Freie Universität Berlin
3// Copyright (c) 2016-2023, Knut Reinert & MPI für molekulare Genetik
4// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5// shipped with this file and also available at: https://github.com/seqan/sharg-parser/blob/main/LICENSE.md
6// --------------------------------------------------------------------------------------------------------
7
13#pragma once
14
15#include <cassert>
16#include <filesystem>
17#include <system_error>
18
19#include <sharg/platform.hpp>
20
21namespace sharg::detail
22{
23
37class safe_filesystem_entry
38{
39public:
43 safe_filesystem_entry() = delete;
44 safe_filesystem_entry(safe_filesystem_entry const &) = delete;
45 safe_filesystem_entry(safe_filesystem_entry &&) = default;
46 safe_filesystem_entry & operator=(safe_filesystem_entry const &) = delete;
47 safe_filesystem_entry & operator=(safe_filesystem_entry &&) = default;
48
52 safe_filesystem_entry(std::filesystem::path p) : entry(std::move(p))
53 {}
54
56 ~safe_filesystem_entry()
57 {
60
61 assert(!static_cast<bool>(ec));
62 }
64
73 bool remove()
74 {
75 return std::filesystem::remove(entry);
76 }
77
79 bool remove_no_throw() const noexcept
80 {
82 return std::filesystem::remove(entry, ec);
83 }
84
95 {
96 return std::filesystem::remove_all(entry);
97 }
98
99private:
102};
103
104} // namespace sharg::detail
T move(T... args)
Provides platform and dependency checks.
T remove_all(T... args)