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));
37 namespace fs = std::filesystem;
44 return (fs::path(Config::SOURCE_DIR) /
normalized).string();
61 [[nodiscard]]
virtual bool can_write(
const std::string& filepath)
const = 0;
69 virtual bool open(
const std::string& filepath,
81 [[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.
@ 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.
@ ALL
All options enabled.
@ NONE
No special options.
FileReadOptions operator&(FileReadOptions a, FileReadOptions b)
FileReadOptions operator|(FileReadOptions a, FileReadOptions b)
std::string resolve_write_path(const std::string &filepath)
Anchor a relative output path to Config::SOURCE_DIR.
std::vector< double > normalized(const std::vector< double > &data, double target_peak)
Normalize single-channel data (non-destructive)