diff --git a/core/os/os2/file.odin b/core/os/os2/file.odin index 1b98ae1dd..0efa53537 100644 --- a/core/os/os2/file.odin +++ b/core/os/os2/file.odin @@ -6,6 +6,7 @@ import "base:runtime" File :: struct { impl: _File, + stream: io.Stream, } File_Mode :: distinct u32 @@ -72,56 +73,56 @@ name :: proc(f: ^File) -> string { close :: proc(f: ^File) -> Error { if f != nil { - return io.close(f.impl.stream) + return io.close(f.stream) } return nil } seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Error) { if f != nil { - return io.seek(f.impl.stream, offset, whence) + return io.seek(f.stream, offset, whence) } return 0, .Invalid_File } read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) { if f != nil { - return io.read(f.impl.stream, p) + return io.read(f.stream, p) } return 0, .Invalid_File } read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) { if f != nil { - return io.read_at(f.impl.stream, p, offset) + return io.read_at(f.stream, p, offset) } return 0, .Invalid_File } write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) { if f != nil { - return io.write(f.impl.stream, p) + return io.write(f.stream, p) } return 0, .Invalid_File } write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) { if f != nil { - return io.write_at(f.impl.stream, p, offset) + return io.write_at(f.stream, p, offset) } return 0, .Invalid_File } file_size :: proc(f: ^File) -> (n: i64, err: Error) { if f != nil { - return io.size(f.impl.stream) + return io.size(f.stream) } return 0, .Invalid_File } flush :: proc(f: ^File) -> Error { if f != nil { - return io.flush(f.impl.stream) + return io.flush(f.stream) } return nil } diff --git a/core/os/os2/file_linux.odin b/core/os/os2/file_linux.odin index d5626791f..61d320184 100644 --- a/core/os/os2/file_linux.odin +++ b/core/os/os2/file_linux.odin @@ -33,8 +33,6 @@ _File :: struct { name: string, fd: int, allocator: runtime.Allocator, - - stream: io.Stream, } _file_allocator :: proc() -> runtime.Allocator { @@ -75,7 +73,7 @@ _new_file :: proc(fd: uintptr, _: string) -> ^File { file.impl.fd = int(fd) file.impl.allocator = _file_allocator() file.impl.name = _get_full_path(file.impl.fd, file.impl.allocator) - file.impl.stream = { + file.stream = { data = file, procedure = _file_stream_proc, } diff --git a/core/os/os2/file_stream.odin b/core/os/os2/file_stream.odin index da1e3344f..84176928d 100644 --- a/core/os/os2/file_stream.odin +++ b/core/os/os2/file_stream.odin @@ -4,8 +4,8 @@ import "core:io" to_stream :: proc(f: ^File) -> (s: io.Stream) { if f != nil { - assert(f.impl.stream.procedure != nil) - s = f.impl.stream + assert(f.stream.procedure != nil) + s = f.stream } return } diff --git a/core/os/os2/file_windows.odin b/core/os/os2/file_windows.odin index eae7b6372..8cb040a0a 100644 --- a/core/os/os2/file_windows.odin +++ b/core/os/os2/file_windows.odin @@ -73,8 +73,6 @@ _File :: struct { wname: win32.wstring, kind: _File_Kind, - stream: io.Stream, - allocator: runtime.Allocator, rw_mutex: sync.RW_Mutex, // read write calls @@ -181,7 +179,7 @@ _new_file :: proc(handle: uintptr, name: string) -> ^File { } f.impl.kind = kind - f.impl.stream = { + f.stream = { data = f, procedure = _file_stream_proc, }