mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
All reads now go through read_slice.
This commit is contained in:
+10
-17
@@ -127,30 +127,23 @@ read_slice :: #force_inline proc(c: ^Context, size: int) -> (res: []u8, err: io.
|
|||||||
when #config(TRACY_ENABLE, false) { tracy.ZoneN("Read Slice"); }
|
when #config(TRACY_ENABLE, false) { tracy.ZoneN("Read Slice"); }
|
||||||
|
|
||||||
b := make([]u8, size, context.temp_allocator);
|
b := make([]u8, size, context.temp_allocator);
|
||||||
|
|
||||||
_, e := c.input->impl_read(b[:]);
|
_, e := c.input->impl_read(b[:]);
|
||||||
if e != .None {
|
if e == .None {
|
||||||
return []u8{}, e;
|
return b, .None;
|
||||||
}
|
}
|
||||||
|
|
||||||
return b, .None;
|
return []u8{}, e;
|
||||||
}
|
}
|
||||||
|
|
||||||
read_data :: #force_inline proc(c: ^Context, $T: typeid) -> (res: T, err: io.Error) {
|
read_data :: #force_inline proc(z: ^Context, $T: typeid) -> (res: T, err: io.Error) {
|
||||||
when #config(TRACY_ENABLE, false) { tracy.ZoneN("Read Data"); }
|
when #config(TRACY_ENABLE, false) { tracy.ZoneN("Read Data"); }
|
||||||
|
|
||||||
when size_of(T) <= 128 {
|
b, e := read_slice(z, size_of(T));
|
||||||
b: [size_of(T)]u8;
|
if e == .None {
|
||||||
} else {
|
return (^T)(&b[0])^, .None;
|
||||||
b := make([]u8, size_of(T), context.temp_allocator);
|
|
||||||
}
|
|
||||||
_, e := c.input->impl_read(b[:]);
|
|
||||||
if e != .None {
|
|
||||||
return T{}, e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
res = (^T)(&b)^;
|
return T{}, e;
|
||||||
return res, .None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
read_u8 :: #force_inline proc(z: ^Context) -> (res: u8, err: io.Error) {
|
read_u8 :: #force_inline proc(z: ^Context) -> (res: u8, err: io.Error) {
|
||||||
@@ -159,9 +152,9 @@ read_u8 :: #force_inline proc(z: ^Context) -> (res: u8, err: io.Error) {
|
|||||||
b, e := read_slice(z, 1);
|
b, e := read_slice(z, 1);
|
||||||
if e == .None {
|
if e == .None {
|
||||||
return b[0], .None;
|
return b[0], .None;
|
||||||
} else {
|
|
||||||
return 0, e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0, e;
|
||||||
}
|
}
|
||||||
|
|
||||||
peek_data :: #force_inline proc(c: ^Context, $T: typeid) -> (res: T, err: io.Error) {
|
peek_data :: #force_inline proc(c: ^Context, $T: typeid) -> (res: T, err: io.Error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user