Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
io_utils.h
1// SPDX-FileCopyrightText: © 2018-2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "zrythm-config.h"
7
8#include <optional>
9
10#include "utils/utf8_string.h"
11
12#include <QTemporaryDir>
13#include <QTemporaryFile>
14
15namespace zrythm::utils::io
16{
17
21utils::Utf8String
22get_path_separator_string ();
23
27fs::path
28get_home_path ();
29
30fs::path
31get_temp_path ();
32
45fs::path
46get_dir (const fs::path &filename);
47
53void
54mkdir (const fs::path &dir);
55
61bool
62touch_file (const fs::path &file_path);
63
64fs::path
65uri_to_file (const utils::Utf8String &uri);
66
70fs::path
71file_strip_ext (const fs::path &filename);
72
76fs::path
77file_get_ext (const fs::path &file);
78
89fs::path
90path_get_basename (const fs::path &filename);
91
103fs::path
104path_get_basename_without_ext (const fs::path &filename);
105
110qint64
111file_get_last_modified_datetime (const fs::path &filename);
112
113Utf8String
114file_get_last_modified_datetime_as_str (const fs::path &filename);
115
126bool
127remove (const fs::path &path);
128
147std::unique_ptr<QTemporaryDir>
148make_tmp_dir (
149 std::optional<QString> template_path = std::nullopt,
150 bool in_temp_dir = true);
151
155inline std::unique_ptr<QTemporaryDir>
156make_tmp_dir_at_path (const fs::path &absolute_template_path)
157{
158 return make_tmp_dir (
159 Utf8String::from_path (absolute_template_path).to_qstring (), false);
160}
161
171std::unique_ptr<QTemporaryFile>
172make_tmp_file (
173 std::optional<utils::Utf8String> template_path = std::nullopt,
174 bool in_temp_dir = true);
175
184bool
185rmdir (const fs::path &path, bool force);
186
193std::vector<fs::path>
194get_files_in_dir_as_basenames (const fs::path &_dir);
195
203std::vector<fs::path>
204get_files_in_dir_ending_in (
205 const fs::path &_dir,
206 bool recursive,
207 const std::optional<utils::Utf8String> &end_string);
208
216std::vector<fs::path>
217get_files_in_dir (const fs::path &_dir);
218
230void
231copy_dir (
232 const fs::path &destdir,
233 const fs::path &srcdir,
234 bool follow_symlinks,
235 bool recursive);
236
248void
249copy_file (const fs::path &destfile, const fs::path &srcfile);
250
259void
260move_file (const fs::path &destfile, const fs::path &srcfile, bool force = false);
261
270fs::path
271get_next_available_filepath (const fs::path &filepath);
272
280Utf8String
281get_legal_file_name (const Utf8String &file_name);
282
286Utf8String
287get_legal_path_name (const Utf8String &path);
288
289#ifdef _WIN32
293utils::Utf8String
294get_registry_string_val (const utils::Utf8String &key);
295#endif
296
297#if defined(__APPLE__) && ZRYTHM_IS_INSTALLER_VER
303[[gnu::nonnull]] int
304get_bundle_path (char * bundle_path);
305#endif
306
310bool
311path_exists (const fs::path &path);
312
313bool
314is_file_hidden (const fs::path &file);
315
321[[nodiscard]] bool
322reflink_file (const fs::path &dest, const fs::path &src);
323
331[[nodiscard]] QByteArray
332read_file_contents (const fs::path &path);
333
341void
342set_file_contents (const fs::path &path, const char * contents, size_t size);
343
351void
352set_file_contents (const fs::path &file_path, const utils::Utf8String &data);
353
362QStringList
363split_paths (const QString &paths);
364
365}; // namespace zrythm::utils::io