| author | |
| committer | |
| log | fbcc559cdbe67b711ea24a152aa7bb3a10bb06c7 |
| tree | fcbad1d82f4f9dbf1d7d4e9d756d84e9d89a9a04 |
| parent | 205e501e42b9a2e1d35afa0873311165100863ae |
Decouple the concepts of address-space size and file size.
Closes #6374 files changed, 32 insertions(+), 31 deletions(-)
std/io.zig+5-5| ... | @@ -195,8 +195,8 @@ pub fn InStream(comptime ReadError: type) type { | ... | @@ -195,8 +195,8 @@ pub fn InStream(comptime ReadError: type) type { |
| 195 | return mem.readVarInt(ReturnType, bytes, endian); | 195 | return mem.readVarInt(ReturnType, bytes, endian); |
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | pub fn skipBytes(self: *Self, num_bytes: usize) !void { | 198 | pub fn skipBytes(self: *Self, num_bytes: u64) !void { |
| 199 | var i: usize = 0; | 199 | var i: u64 = 0; |
| 200 | while (i < num_bytes) : (i += 1) { | 200 | while (i < num_bytes) : (i += 1) { |
| 201 | _ = try self.readByte(); | 201 | _ = try self.readByte(); |
| 202 | } | 202 | } |
| ... | @@ -232,9 +232,9 @@ pub fn OutStream(comptime WriteError: type) type { | ... | @@ -232,9 +232,9 @@ pub fn OutStream(comptime WriteError: type) type { |
| 232 | return self.writeFn(self, slice); | 232 | return self.writeFn(self, slice); |
| 233 | } | 233 | } |
| 234 | 234 | ||
| 235 | pub fn writeByteNTimes(self: *Self, byte: u8, n: usize) Error!void { | 235 | pub fn writeByteNTimes(self: *Self, byte: u8, n: u64) Error!void { |
| 236 | const slice = (*const [1]u8)(&byte)[0..]; | 236 | const slice = (*const [1]u8)(&byte)[0..]; |
| 237 | var i: usize = 0; | 237 | var i: u64 = 0; |
| 238 | while (i < n) : (i += 1) { | 238 | while (i < n) : (i += 1) { |
| 239 | try self.writeFn(self, slice); | 239 | try self.writeFn(self, slice); |
| 240 | } | 240 | } |
| ... | @@ -743,7 +743,7 @@ pub fn CountingOutStream(comptime OutStreamError: type) type { | ... | @@ -743,7 +743,7 @@ pub fn CountingOutStream(comptime OutStreamError: type) type { |
| 743 | pub const Error = OutStreamError; | 743 | pub const Error = OutStreamError; |
| 744 | 744 | ||
| 745 | pub stream: Stream, | 745 | pub stream: Stream, |
| 746 | pub bytes_written: usize, | 746 | pub bytes_written: u64, |
| 747 | child_stream: *Stream, | 747 | child_stream: *Stream, |
| 748 | 748 | ||
| 749 | pub fn init(child_stream: *Stream) Self { | 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,25 +7,25 @@ pub fn SeekableStream(comptime SeekErrorType: type, comptime GetSeekPosErrorType |
| 7 | pub const SeekError = SeekErrorType; | 7 | pub const SeekError = SeekErrorType; |
| 8 | pub const GetSeekPosError = GetSeekPosErrorType; | 8 | pub const GetSeekPosError = GetSeekPosErrorType; |
| 9 | 9 | ||
| 10 | seekToFn: fn (self: *Self, pos: usize) SeekError!void, | 10 | seekToFn: fn (self: *Self, pos: u64) SeekError!void, |
| 11 | seekForwardFn: fn (self: *Self, pos: isize) SeekError!void, | 11 | seekForwardFn: fn (self: *Self, pos: i64) SeekError!void, |
| 12 | 12 | ||
| 13 | getPosFn: fn (self: *Self) GetSeekPosError!usize, | 13 | getPosFn: fn (self: *Self) GetSeekPosError!u64, |
| 14 | getEndPosFn: fn (self: *Self) GetSeekPosError!usize, | 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 | return self.seekToFn(self, pos); | 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 | return self.seekForwardFn(self, amt); | 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 | return self.getEndPosFn(self); | 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 | return self.getPosFn(self); | 29 | return self.getPosFn(self); |
| 30 | } | 30 | } |
| 31 | }; | 31 | }; |
std/os/file.zig+12-12| ... | @@ -235,7 +235,7 @@ pub const File = struct { | ... | @@ -235,7 +235,7 @@ pub const File = struct { |
| 235 | Unexpected, | 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 | switch (builtin.os) { | 239 | switch (builtin.os) { |
| 240 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { | 240 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { |
| 241 | const result = posix.lseek(self.handle, amount, posix.SEEK_CUR); | 241 | const result = posix.lseek(self.handle, amount, posix.SEEK_CUR); |
| ... | @@ -266,7 +266,7 @@ pub const File = struct { | ... | @@ -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 | switch (builtin.os) { | 270 | switch (builtin.os) { |
| 271 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { | 271 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { |
| 272 | const ipos = try math.cast(isize, pos); | 272 | const ipos = try math.cast(isize, pos); |
| ... | @@ -307,7 +307,7 @@ pub const File = struct { | ... | @@ -307,7 +307,7 @@ pub const File = struct { |
| 307 | Unexpected, | 307 | Unexpected, |
| 308 | }; | 308 | }; |
| 309 | 309 | ||
| 310 | pub fn getPos(self: File) GetSeekPosError!usize { | 310 | pub fn getPos(self: File) GetSeekPosError!u64 { |
| 311 | switch (builtin.os) { | 311 | switch (builtin.os) { |
| 312 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { | 312 | Os.linux, Os.macosx, Os.ios, Os.freebsd, Os.netbsd => { |
| 313 | const result = posix.lseek(self.handle, 0, posix.SEEK_CUR); | 313 | const result = posix.lseek(self.handle, 0, posix.SEEK_CUR); |
| ... | @@ -324,7 +324,7 @@ pub const File = struct { | ... | @@ -324,7 +324,7 @@ pub const File = struct { |
| 324 | else => os.unexpectedErrorPosix(err), | 324 | else => os.unexpectedErrorPosix(err), |
| 325 | }; | 325 | }; |
| 326 | } | 326 | } |
| 327 | return result; | 327 | return @intCast(u64, result); |
| 328 | }, | 328 | }, |
| 329 | Os.windows => { | 329 | Os.windows => { |
| 330 | var pos: windows.LARGE_INTEGER = undefined; | 330 | var pos: windows.LARGE_INTEGER = undefined; |
| ... | @@ -337,16 +337,16 @@ pub const File = struct { | ... | @@ -337,16 +337,16 @@ pub const File = struct { |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | assert(pos >= 0); | 339 | assert(pos >= 0); |
| 340 | return math.cast(usize, pos); | 340 | return math.cast(u64, pos); |
| 341 | }, | 341 | }, |
| 342 | else => @compileError("unsupported OS"), | 342 | else => @compileError("unsupported OS"), |
| 343 | } | 343 | } |
| 344 | } | 344 | } |
| 345 | 345 | ||
| 346 | pub fn getEndPos(self: File) GetSeekPosError!usize { | 346 | pub fn getEndPos(self: File) GetSeekPosError!u64 { |
| 347 | if (is_posix) { | 347 | if (is_posix) { |
| 348 | const stat = try os.posixFStat(self.handle); | 348 | const stat = try os.posixFStat(self.handle); |
| 349 | return @intCast(usize, stat.size); | 349 | return @intCast(u64, stat.size); |
| 350 | } else if (is_windows) { | 350 | } else if (is_windows) { |
| 351 | var file_size: windows.LARGE_INTEGER = undefined; | 351 | var file_size: windows.LARGE_INTEGER = undefined; |
| 352 | if (windows.GetFileSizeEx(self.handle, &file_size) == 0) { | 352 | if (windows.GetFileSizeEx(self.handle, &file_size) == 0) { |
| ... | @@ -357,7 +357,7 @@ pub const File = struct { | ... | @@ -357,7 +357,7 @@ pub const File = struct { |
| 357 | } | 357 | } |
| 358 | if (file_size < 0) | 358 | if (file_size < 0) |
| 359 | return error.Overflow; | 359 | return error.Overflow; |
| 360 | return math.cast(usize, @intCast(u64, file_size)); | 360 | return @intCast(u64, file_size); |
| 361 | } else { | 361 | } else { |
| 362 | @compileError("TODO support getEndPos on this OS"); | 362 | @compileError("TODO support getEndPos on this OS"); |
| 363 | } | 363 | } |
| ... | @@ -492,22 +492,22 @@ pub const File = struct { | ... | @@ -492,22 +492,22 @@ pub const File = struct { |
| 492 | 492 | ||
| 493 | pub const Stream = io.SeekableStream(SeekError, GetSeekPosError); | 493 | pub const Stream = io.SeekableStream(SeekError, GetSeekPosError); |
| 494 | 494 | ||
| 495 | pub fn seekToFn(seekable_stream: *Stream, pos: usize) SeekError!void { | 495 | pub fn seekToFn(seekable_stream: *Stream, pos: u64) SeekError!void { |
| 496 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); | 496 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 497 | return self.file.seekTo(pos); | 497 | return self.file.seekTo(pos); |
| 498 | } | 498 | } |
| 499 | 499 | ||
| 500 | pub fn seekForwardFn(seekable_stream: *Stream, amt: isize) SeekError!void { | 500 | pub fn seekForwardFn(seekable_stream: *Stream, amt: i64) SeekError!void { |
| 501 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); | 501 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 502 | return self.file.seekForward(amt); | 502 | return self.file.seekForward(amt); |
| 503 | } | 503 | } |
| 504 | 504 | ||
| 505 | pub fn getEndPosFn(seekable_stream: *Stream) GetSeekPosError!usize { | 505 | pub fn getEndPosFn(seekable_stream: *Stream) GetSeekPosError!u64 { |
| 506 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); | 506 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 507 | return self.file.getEndPos(); | 507 | return self.file.getEndPos(); |
| 508 | } | 508 | } |
| 509 | 509 | ||
| 510 | pub fn getPosFn(seekable_stream: *Stream) GetSeekPosError!usize { | 510 | pub fn getPosFn(seekable_stream: *Stream) GetSeekPosError!u64 { |
| 511 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); | 511 | const self = @fieldParentPtr(SeekableStream, "stream", seekable_stream); |
| 512 | return self.file.getPos(); | 512 | return self.file.getPos(); |
| 513 | } | 513 | } |
std/pdb.zig+7-6| ... | @@ -588,7 +588,7 @@ const SuperBlock = packed struct { | ... | @@ -588,7 +588,7 @@ const SuperBlock = packed struct { |
| 588 | 588 | ||
| 589 | const MsfStream = struct { | 589 | const MsfStream = struct { |
| 590 | in_file: os.File, | 590 | in_file: os.File, |
| 591 | pos: usize, | 591 | pos: u64, |
| 592 | blocks: []u32, | 592 | blocks: []u32, |
| 593 | block_size: u32, | 593 | block_size: u32, |
| 594 | 594 | ||
| ... | @@ -598,7 +598,7 @@ const MsfStream = struct { | ... | @@ -598,7 +598,7 @@ const MsfStream = struct { |
| 598 | pub const Error = @typeOf(read).ReturnType.ErrorSet; | 598 | pub const Error = @typeOf(read).ReturnType.ErrorSet; |
| 599 | pub const Stream = io.InStream(Error); | 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 | var stream = MsfStream{ | 602 | var stream = MsfStream{ |
| 603 | .in_file = file, | 603 | .in_file = file, |
| 604 | .pos = 0, | 604 | .pos = 0, |
| ... | @@ -660,23 +660,24 @@ const MsfStream = struct { | ... | @@ -660,23 +660,24 @@ const MsfStream = struct { |
| 660 | return size; | 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 | self.pos += len; | 665 | self.pos += len; |
| 665 | if (self.pos >= self.blocks.len * self.block_size) | 666 | if (self.pos >= self.blocks.len * self.block_size) |
| 666 | return error.EOF; | 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 | self.pos = len; | 671 | self.pos = len; |
| 671 | if (self.pos >= self.blocks.len * self.block_size) | 672 | if (self.pos >= self.blocks.len * self.block_size) |
| 672 | return error.EOF; | 673 | return error.EOF; |
| 673 | } | 674 | } |
| 674 | 675 | ||
| 675 | fn getSize(self: *const MsfStream) usize { | 676 | fn getSize(self: *const MsfStream) u64 { |
| 676 | return self.blocks.len * self.block_size; | 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 | const block_id = self.pos / self.block_size; | 681 | const block_id = self.pos / self.block_size; |
| 681 | const block = self.blocks[block_id]; | 682 | const block = self.blocks[block_id]; |
| 682 | const offset = self.pos % self.block_size; | 683 | const offset = self.pos % self.block_size; |