Implement POSIX file IO
This commit is contained in:
@@ -3,56 +3,71 @@
|
||||
#ifndef FILE_H
|
||||
#define FILE_H
|
||||
|
||||
#include "../../base/mem/allocator/mem_allocator.h"
|
||||
#include "../../common/aliases/aliases.h"
|
||||
#include "../../base/strings/str8/str8.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef WAPP_PLATFORM_CPP
|
||||
BEGIN_C_LINKAGE
|
||||
#endif // !WAPP_PLATFORM_CPP
|
||||
|
||||
typedef FILE WFile;
|
||||
typedef struct WFile WFile;
|
||||
|
||||
typedef enum {
|
||||
WAPP_FA_MODE_R, // Equivalent to r
|
||||
WAPP_FA_MODE_W, // Equivalent to w
|
||||
WAPP_FA_MODE_A, // Equivalent to a
|
||||
WAPP_FA_MODE_R_EX, // Equivalent to r+
|
||||
WAPP_FA_MODE_W_EX, // Equivalent to w+
|
||||
WAPP_FA_MODE_A_EX, // Equivalent to a+
|
||||
WAPP_FA_MODE_RB, // Equivalent to rb
|
||||
WAPP_FA_MODE_WB, // Equivalent to wb
|
||||
WAPP_FA_MODE_AB, // Equivalent to ab
|
||||
WAPP_FA_MODE_RB_EX, // Equivalent to rb+
|
||||
WAPP_FA_MODE_WB_EX, // Equivalent to wb+
|
||||
WAPP_FA_MODE_AB_EX, // Equivalent to ab+
|
||||
WAPP_FA_MODE_WX, // Equivalent to wx
|
||||
WAPP_FA_MODE_WX_EX, // Equivalent to wx+
|
||||
WAPP_FA_MODE_WBX, // Equivalent to wbx
|
||||
WAPP_FA_MODE_WBX_EX, // Equivalent to wbx+
|
||||
WAPP_ACCESS_READ, // Equivalent to r
|
||||
WAPP_ACCESS_WRITE, // Equivalent to w
|
||||
WAPP_ACCESS_APPEND, // Equivalent to a
|
||||
WAPP_ACCESS_READ_EX, // Equivalent to r+
|
||||
WAPP_ACCESS_WRITE_EX, // Equivalent to w+
|
||||
WAPP_ACCESS_APPEND_EX, // Equivalent to a+
|
||||
WAPP_ACCESS_READ_BIN, // Equivalent to rb
|
||||
WAPP_ACCESS_WRITE_BIN, // Equivalent to wb
|
||||
WAPP_ACCESS_APPEND_BIN, // Equivalent to ab
|
||||
WAPP_ACCESS_READ_BIN_EX, // Equivalent to rb+
|
||||
WAPP_ACCESS_WRITE_BIN_EX, // Equivalent to wb+
|
||||
WAPP_ACCESS_APPEND_BIN_EX, // Equivalent to ab+
|
||||
WAPP_ACCESS_WRITE_FAIL_ON_EXIST, // Equivalent to wx
|
||||
WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX, // Equivalent to wx+
|
||||
WAPP_ACCESS_WRITE_BIN_FAIL_ON_EXIST, // Equivalent to wbx
|
||||
WAPP_ACCESS_WRITE_BIN_FAIL_ON_EXIST_EX, // Equivalent to wbx+
|
||||
|
||||
FILE_ACCESS_MODE_COUNT,
|
||||
} FileAccessMode;
|
||||
|
||||
typedef enum {
|
||||
WAPP_SEEK_START = SEEK_SET,
|
||||
WAPP_SEEK_CURRENT = SEEK_CUR,
|
||||
WAPP_SEEK_END = SEEK_END,
|
||||
WAPP_SEEK_START,
|
||||
WAPP_SEEK_CURRENT,
|
||||
WAPP_SEEK_END,
|
||||
|
||||
FILE_SEEK_ORIGIN_COUNT,
|
||||
} FileSeekOrigin;
|
||||
|
||||
WFile *wapp_file_open(Str8RO *filename, FileAccessMode mode);
|
||||
WFile *wapp_file_open(const Allocator *allocator, Str8RO *filepath, FileAccessMode mode);
|
||||
i64 wapp_file_get_current_position(WFile *file);
|
||||
i32 wapp_file_seek(WFile *file, u64 offset, FileSeekOrigin origin);
|
||||
i64 wapp_file_seek(WFile *file, i64 offset, FileSeekOrigin origin);
|
||||
i64 wapp_file_get_length(WFile *file);
|
||||
u64 wapp_file_read(void *dst_buf, WFile *file, u64 byte_count);
|
||||
u64 wapp_file_write(const void *src_buf, WFile *file, u64 byte_count);
|
||||
i64 wapp_file_write(const void *src_buf, WFile *file, u64 byte_count);
|
||||
u64 wapp_file_read_array(GenericArray dst_buf, WFile *file, u64 item_count);
|
||||
u64 wapp_file_write_array(const GenericArray src_buf, WFile *file, u64 item_count);
|
||||
i64 wapp_file_write_array(const GenericArray src_buf, WFile *file, u64 item_count);
|
||||
i32 wapp_file_flush(WFile *file);
|
||||
i32 wapp_file_close(WFile *file);
|
||||
i32 wapp_file_rename(Str8RO *old_filepath, Str8RO *new_filepath);
|
||||
i32 wapp_file_remove(Str8RO *filepath);
|
||||
|
||||
extern WFile *_file_open(const Allocator *allocator, Str8RO *filepath, FileAccessMode mode);
|
||||
extern i64 _file_get_current_position(WFile *file);
|
||||
extern i64 _file_seek(WFile *file, i64 offset, FileSeekOrigin origin);
|
||||
extern i64 _file_get_length(WFile *file);
|
||||
extern u64 _file_read(void *dst_buf, WFile *file, u64 byte_count);
|
||||
extern i64 _file_write(const void *src_buf, WFile *file, u64 byte_count);
|
||||
extern u64 _file_read_array(GenericArray dst_buf, WFile *file, u64 item_count);
|
||||
extern i64 _file_write_array(const GenericArray src_buf, WFile *file, u64 item_count);
|
||||
extern i32 _file_flush(WFile *file);
|
||||
extern i32 _file_close(WFile *file);
|
||||
extern i32 _file_rename(Str8RO *old_filepath, Str8RO *new_filepath);
|
||||
extern i32 _file_remove(Str8RO *filepath);
|
||||
|
||||
#ifdef WAPP_PLATFORM_CPP
|
||||
END_C_LINKAGE
|
||||
#endif // !WAPP_PLATFORM_CPP
|
||||
|
||||
Reference in New Issue
Block a user