| author | |
| committer | |
| log | 5d347c01cf2942f7c04277242b440ceb695b3213 |
| tree | 6c962a837b5f81588af0caaf587dbb0cc909ddee |
| parent | 6a34da963b4712da7fa20079e6ab557455ffe4bf |
| parent | 077216b58205fc3fa4920a6e2cbcf9565b2c7116 |
| signature | Signed by PGP key 4AEE18F83AFDEB23 |
Make io offsets/sizes u64 instead of usize4 files changed, 30 insertions(+), 33 deletions(-)
std/io.zig+3-3| ... | ... | @@ -195,8 +195,8 @@ pub fn InStream(comptime ReadError: type) type { |
| 195 | 195 | return mem.readVarInt(ReturnType, bytes, endian); |
| 196 | 196 | } |
| 197 | 197 | |
| 198 | pub fn skipBytes(self: *Self, num_bytes: usize) !void { | |
| 199 | var i: usize = 0; | |
| 198 | pub fn skipBytes(self: *Self, num_bytes: u64) !void { | |
| 199 | var i: u64 = 0; | |
| 200 | 200 | while (i < num_bytes) : (i += 1) { |
| 201 | 201 | _ = try self.readByte(); |
| 202 | 202 | } |
| ... | ... | @@ -743,7 +743,7 @@ pub fn CountingOutStream(comptime OutStreamError: type) type { |
| 743 | 743 | pub const Error = OutStreamError; |
| 744 | 744 | |
| 745 | 745 | pub stream: Stream, |
| 746 | pub bytes_written: usize, | |
| 746 | pub bytes_written: u64, | |
| 747 | 747 | child_stream: *Stream, |
| 748 | 748 | |
| 749 | 749 | pub fn init(child_stream: *Stream) Self { |
std/io/seekable_stream.zig+8-8| ... | ... | @@ -7,25 +7,25 @@ pub fn SeekableStream(comptime SeekErrorType: type, comptime GetSeekPosErrorType |
| 7 | 7 | pub const SeekError = SeekErrorType; |
| 8 | 8 | pub const GetSeekPosError = GetSeekPosErrorType; |
| 9 | 9 | |
| 10 | seekToFn: fn (self: *Self, pos: usize) SeekError!void, | |
| 11 | seekForwardFn: fn (self: *Self, pos: isize) SeekError!void, | |
| 10 | seekToFn: fn (self: *Self, pos: u64) SeekError!void, | |
| 11 | seekForwardFn: fn (self: *Self, pos: i64) SeekError!void, | |
| 12 | 12 | |
| 13 | getPosFn: fn (self: *Self) GetSeekPosError!usize, | |
| 14 | getEndPosFn: fn (self: *Self) GetSeekPosError!usize, | |
| 13 | getPosFn: fn (self: *Self) GetSeekPosError!u64, | |
| 14 | getEndPosFn: fn (self: *Self) GetSeekPosError!u64, | |
| 15 | 15 | |
| 16 | pub fn seekTo(self: *Self, pos: usize) SeekError!void { | |
| 16 | pub fn seekTo(self: *Self, pos: u64) SeekError!void { | |
| 17 | 17 | return self.seekToFn(self, pos); |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | pub fn seekForward(self: *Self, amt: isize) SeekError!void { | |
| 20 | pub fn seekForward(self: *Self, amt: i64) SeekError!void { | |
| 21 | 21 | return self.seekForwardFn(self, amt); |
| 22 | 22 | } |
| 23 | 23 | |
| 24 | pub fn getEndPos(self: *Self) GetSeekPosError!usize { | |
| 24 | pub fn getEndPos(self: *Self) GetSeekPosError!u64 { | |
| 25 | 25 | return self.getEndPosFn(self); |
| 26 | 26 | } |
| 27 | 27 | |
| 28 | pub fn getPos(self: *Self) GetSeekPosError!usize { | |
| 28 | pub fn getPos(self: *Self) GetSeekPosError!u64 { | |
| 29 | 29 | return self.getPosFn(self); |
| 30 | 30 | } |
| 31 | 31 | }; |
std/os/file.zig+12-16| ... | ... | @@ -235,7 +235,7 @@ pub const File = struct { |
| 235 | 235 | Unexpected, |
| 236 | 236 | }; |
| 237 | 237 | |
| 238 | pub fn seekForward(self: File, amount: isize) SeekError!void { | |
| 238 | pub fn seekForward(self: File, amount: i64) SeekError!void { | |
| 239 | 239 | switch (builtin.os) { |
| 240 | 240 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { |
| 241 | 241 | const result = posix.lseek(self.handle, amount, posix.SEEK_CUR); |
| ... | ... | @@ -266,7 +266,7 @@ pub const File = struct { |
| 266 | 266 | } |
| 267 | 267 | } |
| 268 | 268 | |
| 269 | pub fn seekTo(self: File, pos: usize) SeekError!void { | |
| 269 | pub fn seekTo(self: File, pos: u64) SeekError!void { | |
| 270 | 270 | switch (builtin.os) { |
| 271 | 271 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { |
| 272 | 272 | const ipos = try math.cast(isize, pos); |
| ... | ... | @@ -301,13 +301,12 @@ pub const File = struct { |
| 301 | 301 | } |
| 302 | 302 | |
| 303 | 303 | pub const GetSeekPosError = error{ |
| 304 | Overflow, | |
| 305 | 304 | SystemResources, |
| 306 | 305 | Unseekable, |
| 307 | 306 | Unexpected, |
| 308 | 307 | }; |
| 309 | 308 | |
| 310 | pub fn getPos(self: File) GetSeekPosError!usize { | |
| 309 | pub fn getPos(self: File) GetSeekPosError!u64 { | |
| 311 | 310 | switch (builtin.os) { |
| 312 | 311 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { |
| 313 | 312 | const result = posix.lseek(self.handle, 0, posix.SEEK_CUR); |
| ... | ... | @@ -324,7 +323,7 @@ pub const File = struct { |
| 324 | 323 | else => os.unexpectedErrorPosix(err), |
| 325 | 324 | }; |
| 326 | 325 | } |
| 327 | return result; | |
| 326 | return u64(result); | |
| 328 | 327 | }, |
| 329 | 328 | Os.windows => { |
| 330 | 329 | var pos: windows.LARGE_INTEGER = undefined; |
| ... | ... | @@ -336,17 +335,16 @@ pub const File = struct { |
| 336 | 335 | }; |
| 337 | 336 | } |
| 338 | 337 | |
| 339 | assert(pos >= 0); | |
| 340 | return math.cast(usize, pos); | |
| 338 | return @intCast(u64, pos); | |
| 341 | 339 | }, |
| 342 | 340 | else => @compileError("unsupported OS"), |
| 343 | 341 | } |
| 344 | 342 | } |
| 345 | 343 | |
| 346 | pub fn getEndPos(self: File) GetSeekPosError!usize { | |
| 344 | pub fn getEndPos(self: File) GetSeekPosError!u64 { | |
| 347 | 345 | if (is_posix) { |
| 348 | 346 | const stat = try os.posixFStat(self.handle); |
| 349 | return @intCast(usize, stat.size); | |
| 347 | return @intCast(u64, stat.size); | |
| 350 | 348 | } else if (is_windows) { |
| 351 | 349 | var file_size: windows.LARGE_INTEGER = undefined; |
| 352 | 350 | if (windows.GetFileSizeEx(self.handle, &file_size) == 0) { |
| ... | ... | @@ -355,9 +353,7 @@ pub const File = struct { |
| 355 | 353 | else => os.unexpectedErrorWindows(err), |
| 356 | 354 | }; |
| 357 | 355 | } |
| 358 | if (file_size < 0) | |
| 359 | return error.Overflow; | |
| 360 | return math.cast(usize, @intCast(u64, file_size)); | |
| 356 | return @intCast(u64, file_size); | |
| 361 | 357 | } else { |
| 362 | 358 | @compileError("TODO support getEndPos on this OS"); |
| 363 | 359 | } |
| ... | ... | @@ -492,22 +488,22 @@ pub const File = struct { |
| 492 | 488 | |
| 493 | 489 | pub const Stream = io.SeekableStream(SeekError, GetSeekPosError); |
| 494 | 490 | |
| 495 | pub fn seekToFn(seekable_stream: *Stream, pos: usize) SeekError!void { | |
| 491 | pub fn seekToFn(seekable_stream: *Stream, pos: u64) SeekError!void { | |
| 496 | 492 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 497 | 493 | return self.file.seekTo(pos); |
| 498 | 494 | } |
| 499 | 495 | |
| 500 | pub fn seekForwardFn(seekable_stream: *Stream, amt: isize) SeekError!void { | |
| 496 | pub fn seekForwardFn(seekable_stream: *Stream, amt: i64) SeekError!void { | |
| 501 | 497 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 502 | 498 | return self.file.seekForward(amt); |
| 503 | 499 | } |
| 504 | 500 | |
| 505 | pub fn getEndPosFn(seekable_stream: *Stream) GetSeekPosError!usize { | |
| 501 | pub fn getEndPosFn(seekable_stream: *Stream) GetSeekPosError!u64 { | |
| 506 | 502 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 507 | 503 | return self.file.getEndPos(); |
| 508 | 504 | } |
| 509 | 505 | |
| 510 | pub fn getPosFn(seekable_stream: *Stream) GetSeekPosError!usize { | |
| 506 | pub fn getPosFn(seekable_stream: *Stream) GetSeekPosError!u64 { | |
| 511 | 507 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 512 | 508 | return self.file.getPos(); |
| 513 | 509 | } |
std/pdb.zig+7-6| ... | ... | @@ -588,7 +588,7 @@ const SuperBlock = packed struct { |
| 588 | 588 | |
| 589 | 589 | const MsfStream = struct { |
| 590 | 590 | in_file: os.File, |
| 591 | pos: usize, | |
| 591 | pos: u64, | |
| 592 | 592 | blocks: []u32, |
| 593 | 593 | block_size: u32, |
| 594 | 594 | |
| ... | ... | @@ -598,7 +598,7 @@ const MsfStream = struct { |
| 598 | 598 | pub const Error = @typeOf(read).ReturnType.ErrorSet; |
| 599 | 599 | pub const Stream = io.InStream(Error); |
| 600 | 600 | |
| 601 | fn init(block_size: u32, block_count: u32, pos: usize, file: os.File, allocator: *mem.Allocator) !MsfStream { | |
| 601 | fn init(block_size: u32, block_count: u32, pos: u64, file: os.File, allocator: *mem.Allocator) !MsfStream { | |
| 602 | 602 | var stream = MsfStream{ |
| 603 | 603 | .in_file = file, |
| 604 | 604 | .pos = 0, |
| ... | ... | @@ -660,23 +660,24 @@ const MsfStream = struct { |
| 660 | 660 | return size; |
| 661 | 661 | } |
| 662 | 662 | |
| 663 | fn seekForward(self: *MsfStream, len: usize) !void { | |
| 663 | // XXX: The `len` parameter should be signed | |
| 664 | fn seekForward(self: *MsfStream, len: u64) !void { | |
| 664 | 665 | self.pos += len; |
| 665 | 666 | if (self.pos >= self.blocks.len * self.block_size) |
| 666 | 667 | return error.EOF; |
| 667 | 668 | } |
| 668 | 669 | |
| 669 | fn seekTo(self: *MsfStream, len: usize) !void { | |
| 670 | fn seekTo(self: *MsfStream, len: u64) !void { | |
| 670 | 671 | self.pos = len; |
| 671 | 672 | if (self.pos >= self.blocks.len * self.block_size) |
| 672 | 673 | return error.EOF; |
| 673 | 674 | } |
| 674 | 675 | |
| 675 | fn getSize(self: *const MsfStream) usize { | |
| 676 | fn getSize(self: *const MsfStream) u64 { | |
| 676 | 677 | return self.blocks.len * self.block_size; |
| 677 | 678 | } |
| 678 | 679 | |
| 679 | fn getFilePos(self: MsfStream) usize { | |
| 680 | fn getFilePos(self: MsfStream) u64 { | |
| 680 | 681 | const block_id = self.pos / self.block_size; |
| 681 | 682 | const block = self.blocks[block_id]; |
| 682 | 683 | const offset = self.pos % self.block_size; |