17 return static_cast<FileWriteOptions>(
static_cast<uint32_t
>(
a) |
static_cast<uint32_t
>(
b));
22 return static_cast<FileWriteOptions>(
static_cast<uint32_t
>(
a) &
static_cast<uint32_t
>(
b));
36 const std::string& filepath,
37 std::string_view default_directory = Config::OUT_DIR)
39 namespace fs = std::filesystem;
40 auto normalized = std::string(filepath);
41 std::ranges::replace(normalized,
'\\',
'/');
43 if (fs::path(normalized).is_absolute())
46 if (!fs::path(normalized).has_parent_path())
47 return (fs::path(default_directory) / normalized).string();
91 [[nodiscard]]
virtual bool can_write(
const std::string& filepath)
const = 0;
99 virtual bool open(
const std::string& filepath,
111 [[nodiscard]]
virtual bool is_open()
const = 0;
virtual void close()=0
Close the currently open file.
virtual bool write_bytes(const void *data, size_t size)=0
Write raw bytes.
virtual std::string get_last_error() const =0
Get last error message.
virtual bool open(const std::string &filepath, FileWriteOptions options=FileWriteOptions::CREATE|FileWriteOptions::TRUNCATE)=0
Open a file for writing.
virtual size_t get_write_position() const =0
Get current write position (bytes written)
virtual bool can_write(const std::string &filepath) const =0
Check if this writer can handle the given file path.
virtual ~FileWriter()=default
virtual bool write_string(std::string_view str)=0
Write a string.
virtual bool write_line(std::string_view line)=0
Write a line (appends newline)
virtual bool is_open() const =0
Check if a file is currently open for writing.
virtual bool flush()=0
Flush buffered writes to disk.
Abstract base class for file writing operations.
std::string project_root()
AudioReadOptions operator&(AudioReadOptions a, AudioReadOptions b)
@ TRUNCATE
Truncate existing file.
@ BUFFER
Use internal buffering.
@ SYNC
Sync after each write (slow but safe)
@ CREATE
Create if doesn't exist.
@ APPEND
Append to existing file.
std::string resolve_sequence_path(std::string_view pattern, uint64_t frame)
Substitute a frame index into a numbered output pattern.
AudioReadOptions operator|(AudioReadOptions a, AudioReadOptions b)
std::string resolve_write_path(const std::string &filepath, std::string_view default_directory=Config::OUT_DIR)
Resolve a writable path against the configured output directory.