| 9 | godot_vfs = vfs; |
| 10 | } |
| 11 | Ref<FileAccess> FileAccess::open(const String &p_path, int p_mode_flags, Error *r_error) |
| 12 | { |
| 13 | FileAccess *fa = SkrNew<FileAccess>(); |
| 14 | ESkrFileMode mod; |
| 15 | ESkrFileCreation cr = ESkrFileCreation::SKR_FILE_CREATION_OPEN_EXISTING; |
| 16 | switch (p_mode_flags) { |
| 17 | case READ: |
| 18 | mod = ESkrFileMode::SKR_FM_READ; |
| 19 | break; |
| 20 | case WRITE: |
| 21 | mod = ESkrFileMode::SKR_FM_WRITE; |
| 22 | break; |
| 23 | case READ_WRITE: |
| 24 | mod = ESkrFileMode::SKR_FM_READ_WRITE; |
| 25 | cr = ESkrFileCreation::SKR_FILE_CREATION_IF_NEEDED; |
| 26 | break; |
| 27 | case WRITE_READ: |
| 28 | mod = ESkrFileMode::SKR_FM_READ_WRITE; |
| 29 | break; |
| 30 | } |
| 31 | fa->file = skr_vfs_fopen(godot_vfs, (char8_t*)p_path.utf8().get_data(), mod, cr); |
| 32 | if (fa->file == nullptr) |
| 33 | { |
| 34 | if (r_error) |
| 35 | *r_error = ERR_CANT_OPEN; |
| 36 | SkrDelete(fa); |
| 37 | return Ref<FileAccess>(); |
| 38 | } |
| 39 | return Ref<FileAccess>(fa); |
| 40 | } |
| 41 | uint64_t FileAccess::get_length() const |
| 42 | { |
| 43 | return skr_vfs_fsize(file); |