refactor: reduce write calls in float writing functions
Also using std.mem.writeInt.
This commit is contained in:
parent
30e260bcea
commit
be1e1f551e
1 changed files with 12 additions and 35 deletions
47
src/cbor.zig
47
src/cbor.zig
|
|
@ -146,47 +146,24 @@ fn writeU64(writer: *Io.Writer, value: u64) Io.Writer.Error!void {
|
|||
}
|
||||
|
||||
fn writeF16(writer: *Io.Writer, value: f16) Io.Writer.Error!void {
|
||||
try write(writer, cbor_magic_float16);
|
||||
const value_bytes = std.mem.asBytes(&value);
|
||||
switch (native_endian) {
|
||||
.big => try write(writer, value_bytes),
|
||||
.little => {
|
||||
try write(writer, value_bytes[1]);
|
||||
try write(writer, value_bytes[0]);
|
||||
},
|
||||
}
|
||||
var buf: [3]u8 = undefined;
|
||||
buf[0] = cbor_magic_float16;
|
||||
std.mem.writeInt(u16, buf[1..3], @bitCast(value), .big);
|
||||
_ = try writer.write(&buf);
|
||||
}
|
||||
|
||||
fn writeF32(writer: *Io.Writer, value: f32) Io.Writer.Error!void {
|
||||
try write(writer, cbor_magic_float32);
|
||||
const value_bytes = std.mem.asBytes(&value);
|
||||
switch (native_endian) {
|
||||
.big => try write(writer, value_bytes),
|
||||
.little => {
|
||||
try write(writer, value_bytes[3]);
|
||||
try write(writer, value_bytes[2]);
|
||||
try write(writer, value_bytes[1]);
|
||||
try write(writer, value_bytes[0]);
|
||||
},
|
||||
}
|
||||
var buf: [5]u8 = undefined;
|
||||
buf[0] = cbor_magic_float32;
|
||||
std.mem.writeInt(u32, buf[1..5], @bitCast(value), .big);
|
||||
_ = try writer.write(&buf);
|
||||
}
|
||||
|
||||
fn writeF64(writer: *Io.Writer, value: f64) Io.Writer.Error!void {
|
||||
try write(writer, cbor_magic_float64);
|
||||
const value_bytes = std.mem.asBytes(&value);
|
||||
switch (native_endian) {
|
||||
.big => try write(writer, value_bytes),
|
||||
.little => {
|
||||
try write(writer, value_bytes[7]);
|
||||
try write(writer, value_bytes[6]);
|
||||
try write(writer, value_bytes[5]);
|
||||
try write(writer, value_bytes[4]);
|
||||
try write(writer, value_bytes[3]);
|
||||
try write(writer, value_bytes[2]);
|
||||
try write(writer, value_bytes[1]);
|
||||
try write(writer, value_bytes[0]);
|
||||
},
|
||||
}
|
||||
var buf: [9]u8 = undefined;
|
||||
buf[0] = cbor_magic_float64;
|
||||
std.mem.writeInt(u64, buf[1..9], @bitCast(value), .big);
|
||||
_ = try writer.write(&buf);
|
||||
}
|
||||
|
||||
fn writeString(writer: *Io.Writer, s: []const u8) Io.Writer.Error!void {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue