MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
FileWriter.hpp
Go to the documentation of this file.
1#pragma once
2
3namespace MayaFlux::IO {
4
5enum class FileWriteOptions : uint32_t {
6 NONE = 0,
7 APPEND = 1 << 0, ///< Append to existing file
8 CREATE = 1 << 1, ///< Create if doesn't exist
9 TRUNCATE = 1 << 2, ///< Truncate existing file
10 SYNC = 1 << 3, ///< Sync after each write (slow but safe)
11 BUFFER = 1 << 4, ///< Use internal buffering
12 ALL = 0xFFFFFFFF
13};
14
16{
17 return static_cast<FileWriteOptions>(static_cast<uint32_t>(a) | static_cast<uint32_t>(b));
18}
19
21{
22 return static_cast<FileWriteOptions>(static_cast<uint32_t>(a) & static_cast<uint32_t>(b));
23}
24
25/**
26 * @class FileWriter
27 * @brief Abstract base class for file writing operations
28 *
29 * Provides interface for writing various data types to files.
30 * Concrete implementations handle specific formats (text, binary, audio, etc.)
31 */
33public:
34 virtual ~FileWriter() = default;
35
36 /**
37 * @brief Check if this writer can handle the given file path
38 */
39 [[nodiscard]] virtual bool can_write(const std::string& filepath) const = 0;
40
41 /**
42 * @brief Open a file for writing
43 * @param filepath Path to the file
44 * @param options Write options (append, create, truncate, etc.)
45 * @return true if successful
46 */
47 virtual bool open(const std::string& filepath,
49 = 0;
50
51 /**
52 * @brief Close the currently open file
53 */
54 virtual void close() = 0;
55
56 /**
57 * @brief Check if a file is currently open for writing
58 */
59 [[nodiscard]] virtual bool is_open() const = 0;
60
61 /**
62 * @brief Write raw bytes
63 */
64 virtual bool write_bytes(const void* data, size_t size) = 0;
65
66 /**
67 * @brief Write a string
68 */
69 virtual bool write_string(std::string_view str) = 0;
70
71 /**
72 * @brief Write a line (appends newline)
73 */
74 virtual bool write_line(std::string_view line) = 0;
75
76 /**
77 * @brief Flush buffered writes to disk
78 */
79 virtual bool flush() = 0;
80
81 /**
82 * @brief Get current write position (bytes written)
83 */
84 [[nodiscard]] virtual size_t get_write_position() const = 0;
85
86 /**
87 * @brief Get last error message
88 */
89 [[nodiscard]] virtual std::string get_last_error() const = 0;
90};
91
92} // namespace MayaFlux::IO
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)