143#define STDIO_TRY(...) \
145 auto __result = (__VA_ARGS__); \
147 errno = di::to_underlying(__result.error().value()); \
150 di::util::move(__result).__try_did_succeed(); \
153#define STDIO_TRY_OR_MARK_ERROR(file, ...) \
155 auto __result = (__VA_ARGS__); \
157 errno = di::to_underlying(__result.error().value()); \
158 (file).mark_as_error(); \
161 di::util::move(__result).__try_did_succeed(); \
164#define STDIO_TRY_OR_NULL(...) \
166 auto __result = (__VA_ARGS__); \
168 errno = di::to_underlying(__result.error().value()); \
171 di::util::move(__result).__try_did_succeed(); \
182 template<
typename... Args>
auto aligned_alloc(size_t alignment, size_t size) -> void *
Definition aligned_alloc.cpp:8
#define DI_DEFINE_ENUM_BITWISE_OPERATIONS(Type)
Definition bitwise_enum.h:5
Definition synchronized.h:17
Definition expected_forward_declaration.h:8
Definition unexpected.h:14
Definition sync_file.h:40
constexpr usize size
Definition gfx_test.cpp:24
di::Box< FILE, FileDeleter > FileHandle
Definition file_implementation.h:37
ReadWriteMode
Definition file_implementation.h:58
@ Write
Definition file_implementation.h:61
@ None
Definition file_implementation.h:59
@ Read
Definition file_implementation.h:60
BufferMode
Definition file_implementation.h:39
@ LineBuffered
Definition file_implementation.h:41
@ FullBuffered
Definition file_implementation.h:42
@ NotBuffered
Definition file_implementation.h:40
Status
Definition file_implementation.h:64
@ Eof
Definition file_implementation.h:66
@ None
Definition file_implementation.h:65
@ Error
Definition file_implementation.h:67
BufferOwnership
Definition file_implementation.h:53
@ Owned
Definition file_implementation.h:54
@ UserProvided
Definition file_implementation.h:55
Permissions
Definition file_implementation.h:45
@ Readable
Definition file_implementation.h:47
@ None
Definition file_implementation.h:46
@ Writable
Definition file_implementation.h:48
size_t usize
Definition integers.h:33
StatusCode< platform::GenericDomain > GenericCode
Definition status_code_forward_declaration.h:13
Definition zstring_parser.h:9
constexpr auto data
Definition data.h:51
constexpr auto in_place
Definition in_place.h:8
constexpr auto deallocate_many
Definition deallocate_many.h:28
int fclose(FILE *__file)
Definition fclose.cpp:4
struct __file_implementation FILE
Definition stdio.h:26
#define _IONBF
Definition stdio.h:14
#define _IOLBF
Definition stdio.h:13
#define _IOFBF
Definition stdio.h:12
void * malloc(size_t __size)
Definition malloc.cpp:5
void free(void *__pointer)
Definition free.cpp:7
constexpr __file_implementation(Args &&... args)
Definition file_implementation.h:184
ccpp::File & get_unlocked()
Get the file implementation.
Definition file_implementation.h:180
di::Synchronized< ccpp::File > locked
Definition file_implementation.h:186
Definition file_implementation.h:33
void operator()(FILE *file) const
Definition file_implementation.h:34
Definition file_implementation.h:72
usize buffer_size
Definition file_implementation.h:135
Permissions permissions
Definition file_implementation.h:140
constexpr File(dius::SyncFile file_, byte *buffer_, usize buffer_capacity_, usize buffer_offset_, usize buffer_size_, BufferMode buffer_mode_, BufferOwnership buffer_ownership_, ReadWriteMode read_write_mode_, Status status_, Permissions permissions_)
Definition file_implementation.h:75
void mark_as_eof()
Definition file_implementation.h:121
Status status
Definition file_implementation.h:139
byte * buffer
Definition file_implementation.h:132
usize buffer_capacity
Definition file_implementation.h:133
dius::SyncFile file
Definition file_implementation.h:131
BufferOwnership buffer_ownership
Definition file_implementation.h:137
bool has_error() const
Definition file_implementation.h:129
void mark_as_error()
Definition file_implementation.h:126
usize buffer_offset
Definition file_implementation.h:134
bool writable() const
Definition file_implementation.h:97
di::Expected< void, di::GenericCode > mark_as_writable()
Definition file_implementation.h:110
BufferMode buffer_mode
Definition file_implementation.h:136
di::Expected< void, di::GenericCode > mark_as_readable()
Definition file_implementation.h:99
bool readable() const
Definition file_implementation.h:96
ReadWriteMode read_write_mode
Definition file_implementation.h:138
constexpr ~File()
Definition file_implementation.h:89
bool at_eof() const
Definition file_implementation.h:128
Definition file_implementation.h:14
static void deallocate(void *pointer, usize, usize)
Definition file_implementation.h:30
static di::Expected< di::container::AllocationResult<>, di::GenericCode > allocate(usize size, usize align)
Definition file_implementation.h:16
Definition allocation_result.h:7