mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 07:08:48 +00:00
Use i64 instead of int for internal procedures
This commit is contained in:
@@ -37,14 +37,18 @@ _get_platform_error :: proc() -> Error {
|
|||||||
case win32.ERROR_NOT_SUPPORTED:
|
case win32.ERROR_NOT_SUPPORTED:
|
||||||
return .Unsupported
|
return .Unsupported
|
||||||
|
|
||||||
|
case win32.ERROR_HANDLE_EOF:
|
||||||
|
return .EOF
|
||||||
|
|
||||||
|
case win32.ERROR_INVALID_HANDLE:
|
||||||
|
return .Invalid_File
|
||||||
|
|
||||||
case
|
case
|
||||||
win32.ERROR_BAD_ARGUMENTS,
|
win32.ERROR_BAD_ARGUMENTS,
|
||||||
win32.ERROR_INVALID_PARAMETER,
|
win32.ERROR_INVALID_PARAMETER,
|
||||||
win32.ERROR_NOT_ENOUGH_MEMORY,
|
win32.ERROR_NOT_ENOUGH_MEMORY,
|
||||||
win32.ERROR_INVALID_HANDLE,
|
|
||||||
win32.ERROR_NO_MORE_FILES,
|
win32.ERROR_NO_MORE_FILES,
|
||||||
win32.ERROR_LOCK_VIOLATION,
|
win32.ERROR_LOCK_VIOLATION,
|
||||||
win32.ERROR_HANDLE_EOF,
|
|
||||||
win32.ERROR_BROKEN_PIPE,
|
win32.ERROR_BROKEN_PIPE,
|
||||||
win32.ERROR_CALL_NOT_IMPLEMENTED,
|
win32.ERROR_CALL_NOT_IMPLEMENTED,
|
||||||
win32.ERROR_INSUFFICIENT_BUFFER,
|
win32.ERROR_INSUFFICIENT_BUFFER,
|
||||||
|
|||||||
+32
-8
@@ -71,35 +71,59 @@ name :: proc(f: ^File) -> string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
close :: proc(f: ^File) -> Error {
|
close :: proc(f: ^File) -> Error {
|
||||||
return io.close(f.impl.stream)
|
if f != nil {
|
||||||
|
return io.close(f.impl.stream)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Error) {
|
seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Error) {
|
||||||
return io.seek(f.impl.stream, offset, whence)
|
if f != nil {
|
||||||
|
return io.seek(f.impl.stream, offset, whence)
|
||||||
|
}
|
||||||
|
return 0, .Invalid_File
|
||||||
}
|
}
|
||||||
|
|
||||||
read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
||||||
return io.read(f.impl.stream, p)
|
if f != nil {
|
||||||
|
return io.read(f.impl.stream, p)
|
||||||
|
}
|
||||||
|
return 0, .Invalid_File
|
||||||
}
|
}
|
||||||
|
|
||||||
read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
||||||
return io.read_at(f.impl.stream, p, offset)
|
if f != nil {
|
||||||
|
return io.read_at(f.impl.stream, p, offset)
|
||||||
|
}
|
||||||
|
return 0, .Invalid_File
|
||||||
}
|
}
|
||||||
|
|
||||||
write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
||||||
return io.write(f.impl.stream, p)
|
if f != nil {
|
||||||
|
return io.write(f.impl.stream, p)
|
||||||
|
}
|
||||||
|
return 0, .Invalid_File
|
||||||
}
|
}
|
||||||
|
|
||||||
write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
||||||
return io.write_at(f.impl.stream, p, offset)
|
if f != nil {
|
||||||
|
return io.write_at(f.impl.stream, p, offset)
|
||||||
|
}
|
||||||
|
return 0, .Invalid_File
|
||||||
}
|
}
|
||||||
|
|
||||||
file_size :: proc(f: ^File) -> (n: i64, err: Error) {
|
file_size :: proc(f: ^File) -> (n: i64, err: Error) {
|
||||||
return io.size(f.impl.stream)
|
if f != nil {
|
||||||
|
return io.size(f.impl.stream)
|
||||||
|
}
|
||||||
|
return 0, .Invalid_File
|
||||||
}
|
}
|
||||||
|
|
||||||
flush :: proc(f: ^File) -> Error {
|
flush :: proc(f: ^File) -> Error {
|
||||||
return io.flush(f.impl.stream)
|
if f != nil {
|
||||||
|
return io.flush(f.impl.stream)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
sync :: proc(f: ^File) -> Error {
|
sync :: proc(f: ^File) -> Error {
|
||||||
|
|||||||
+14
-18
@@ -116,18 +116,18 @@ _seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Er
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
_read :: proc(f: ^File, p: []byte) -> (i64, Error) {
|
||||||
if len(p) == 0 {
|
if len(p) == 0 {
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
n = unix.sys_read(f.impl.fd, &p[0], len(p))
|
n := unix.sys_read(f.impl.fd, &p[0], len(p))
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
return -1, _get_platform_error(n)
|
return -1, _get_platform_error(n)
|
||||||
}
|
}
|
||||||
return n, nil
|
return i64(n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
|
||||||
if offset < 0 {
|
if offset < 0 {
|
||||||
return 0, .Invalid_Offset
|
return 0, .Invalid_Offset
|
||||||
}
|
}
|
||||||
@@ -138,25 +138,25 @@ _read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
if m < 0 {
|
if m < 0 {
|
||||||
return -1, _get_platform_error(m)
|
return -1, _get_platform_error(m)
|
||||||
}
|
}
|
||||||
n += m
|
n += i64(m)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
offset += i64(m)
|
offset += i64(m)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
_write :: proc(f: ^File, p: []byte) -> (i64, Error) {
|
||||||
if len(p) == 0 {
|
if len(p) == 0 {
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
n = unix.sys_write(f.impl.fd, &p[0], uint(len(p)))
|
n := unix.sys_write(f.impl.fd, &p[0], uint(len(p)))
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
return -1, _get_platform_error(n)
|
return -1, _get_platform_error(n)
|
||||||
}
|
}
|
||||||
return int(n), nil
|
return i64(n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
|
||||||
if offset < 0 {
|
if offset < 0 {
|
||||||
return 0, .Invalid_Offset
|
return 0, .Invalid_Offset
|
||||||
}
|
}
|
||||||
@@ -167,7 +167,7 @@ _write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
if m < 0 {
|
if m < 0 {
|
||||||
return -1, _get_platform_error(m)
|
return -1, _get_platform_error(m)
|
||||||
}
|
}
|
||||||
n += m
|
n += i64(m)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
offset += i64(m)
|
offset += i64(m)
|
||||||
}
|
}
|
||||||
@@ -371,23 +371,19 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte,
|
|||||||
i: int
|
i: int
|
||||||
switch mode {
|
switch mode {
|
||||||
case .Read:
|
case .Read:
|
||||||
i, ferr = _read(f, p)
|
n, ferr = _read(f, p)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Read_At:
|
case .Read_At:
|
||||||
i, ferr = _read_at(f, p, offset)
|
n, ferr = _read_at(f, p, offset)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Write:
|
case .Write:
|
||||||
i, ferr = _write(f, p)
|
n, ferr = _write(f, p)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Write_At:
|
case .Write_At:
|
||||||
i, ferr = _write_at(f, p, offset)
|
n, ferr = _write_at(f, p, offset)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Seek:
|
case .Seek:
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ _seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Er
|
|||||||
return i64(hi)<<32 + i64(dw_ptr), nil
|
return i64(hi)<<32 + i64(dw_ptr), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
_read :: proc(f: ^File, p: []byte) -> (n: i64, err: Error) {
|
||||||
read_console :: proc(handle: win32.HANDLE, b: []byte) -> (n: int, err: Error) {
|
read_console :: proc(handle: win32.HANDLE, b: []byte) -> (n: int, err: Error) {
|
||||||
if len(b) == 0 {
|
if len(b) == 0 {
|
||||||
return 0, nil
|
return 0, nil
|
||||||
@@ -281,7 +281,7 @@ _read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
|||||||
n, err := read_console(handle, p[total_read:][:to_read])
|
n, err := read_console(handle, p[total_read:][:to_read])
|
||||||
total_read += n
|
total_read += n
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return int(total_read), err
|
return i64(total_read), err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ok = win32.ReadFile(handle, &p[total_read], to_read, &single_read_length, nil)
|
ok = win32.ReadFile(handle, &p[total_read], to_read, &single_read_length, nil)
|
||||||
@@ -294,11 +294,11 @@ _read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return int(total_read), err
|
return i64(total_read), err
|
||||||
}
|
}
|
||||||
|
|
||||||
_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
|
||||||
pread :: proc(f: ^File, data: []byte, offset: i64) -> (n: int, err: Error) {
|
pread :: proc(f: ^File, data: []byte, offset: i64) -> (n: i64, err: Error) {
|
||||||
buf := data
|
buf := data
|
||||||
if len(buf) > MAX_RW {
|
if len(buf) > MAX_RW {
|
||||||
buf = buf[:MAX_RW]
|
buf = buf[:MAX_RW]
|
||||||
@@ -320,7 +320,7 @@ _read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
err = _get_platform_error()
|
err = _get_platform_error()
|
||||||
done = 0
|
done = 0
|
||||||
}
|
}
|
||||||
n = int(done)
|
n = i64(done)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,7 +336,7 @@ _read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
_write :: proc(f: ^File, p: []byte) -> (n: i64, err: Error) {
|
||||||
if len(p) == 0 {
|
if len(p) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -354,17 +354,17 @@ _write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
|
|||||||
|
|
||||||
e := win32.WriteFile(handle, &p[total_write], to_write, &single_write_length, nil)
|
e := win32.WriteFile(handle, &p[total_write], to_write, &single_write_length, nil)
|
||||||
if single_write_length <= 0 || !e {
|
if single_write_length <= 0 || !e {
|
||||||
n = int(total_write)
|
n = i64(total_write)
|
||||||
err = _get_platform_error()
|
err = _get_platform_error()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
total_write += i64(single_write_length)
|
total_write += i64(single_write_length)
|
||||||
}
|
}
|
||||||
return int(total_write), nil
|
return i64(total_write), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
|
||||||
pwrite :: proc(f: ^File, data: []byte, offset: i64) -> (n: int, err: Error) {
|
pwrite :: proc(f: ^File, data: []byte, offset: i64) -> (n: i64, err: Error) {
|
||||||
buf := data
|
buf := data
|
||||||
if len(buf) > MAX_RW {
|
if len(buf) > MAX_RW {
|
||||||
buf = buf[:MAX_RW]
|
buf = buf[:MAX_RW]
|
||||||
@@ -384,7 +384,7 @@ _write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
err = _get_platform_error()
|
err = _get_platform_error()
|
||||||
done = 0
|
done = 0
|
||||||
}
|
}
|
||||||
n = int(done)
|
n = i64(done)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,23 +733,19 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte,
|
|||||||
i: int
|
i: int
|
||||||
switch mode {
|
switch mode {
|
||||||
case .Read:
|
case .Read:
|
||||||
i, ferr = _read(f, p)
|
n, ferr = _read(f, p)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Read_At:
|
case .Read_At:
|
||||||
i, ferr = _read_at(f, p, offset)
|
n, ferr = _read_at(f, p, offset)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Write:
|
case .Write:
|
||||||
i, ferr = _write(f, p)
|
n, ferr = _write(f, p)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Write_At:
|
case .Write_At:
|
||||||
i, ferr = _write_at(f, p, offset)
|
n, ferr = _write_at(f, p, offset)
|
||||||
n = i64(i)
|
|
||||||
err = error_to_io_error(ferr)
|
err = error_to_io_error(ferr)
|
||||||
return
|
return
|
||||||
case .Seek:
|
case .Seek:
|
||||||
|
|||||||
Reference in New Issue
Block a user