authorgravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2018-09-16 23:57:23-04:00
committergravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2018-11-14 20:57:51-05:00
log8008ae470e2ad4c185b239b436fb2396f9499ca1
tree03907c853a9dd8449850d015e5985f87882f1991
parent772876b2f0104953af56eccbd85b2b21c6e908ef

io read/write int be/le optimizations


1 files changed, 12 insertions(+), 4 deletions(-)

std/io.zig+12-4
...@@ -155,11 +155,15 @@ pub fn InStream(comptime ReadError: type) type {...@@ -155,11 +155,15 @@ pub fn InStream(comptime ReadError: type) type {
155 }155 }
156156
157 pub fn readIntLe(self: *Self, comptime T: type) !T {157 pub fn readIntLe(self: *Self, comptime T: type) !T {
158 return self.readInt(builtin.Endian.Little, T);158 var bytes: [@sizeOf(T)]u8 = undefined;
159 try self.readNoEof(bytes[0..]);
160 return mem.readIntLE(T, bytes);
159 }161 }
160162
161 pub fn readIntBe(self: *Self, comptime T: type) !T {163 pub fn readIntBe(self: *Self, comptime T: type) !T {
162 return self.readInt(builtin.Endian.Big, T);164 var bytes: [@sizeOf(T)]u8 = undefined;
165 try self.readNoEof(bytes[0..]);
166 return mem.readIntBE(T, bytes);
163 }167 }
164168
165 pub fn readInt(self: *Self, endian: builtin.Endian, comptime T: type) !T {169 pub fn readInt(self: *Self, endian: builtin.Endian, comptime T: type) !T {
...@@ -226,11 +230,15 @@ pub fn OutStream(comptime WriteError: type) type {...@@ -226,11 +230,15 @@ pub fn OutStream(comptime WriteError: type) type {
226 }230 }
227231
228 pub fn writeIntLe(self: *Self, comptime T: type, value: T) !void {232 pub fn writeIntLe(self: *Self, comptime T: type, value: T) !void {
229 return self.writeInt(builtin.Endian.Little, T, value);233 var bytes: [@sizeOf(T)]u8 = undefined;
234 mem.writeIntLE(T, &bytes, value);
235 return self.writeFn(self, bytes);
230 }236 }
231237
232 pub fn writeIntBe(self: *Self, comptime T: type, value: T) !void {238 pub fn writeIntBe(self: *Self, comptime T: type, value: T) !void {
233 return self.writeInt(builtin.Endian.Big, T, value);239 var bytes: [@sizeOf(T)]u8 = undefined;
240 mem.writeIntBE(T, &bytes, value);
241 return self.writeFn(self, bytes);
234 }242 }
235243
236 pub fn writeInt(self: *Self, endian: builtin.Endian, comptime T: type, value: T) !void {244 pub fn writeInt(self: *Self, endian: builtin.Endian, comptime T: type, value: T) !void {