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 {
|
fn writeF16(writer: *Io.Writer, value: f16) Io.Writer.Error!void {
|
||||||
try write(writer, cbor_magic_float16);
|
var buf: [3]u8 = undefined;
|
||||||
const value_bytes = std.mem.asBytes(&value);
|
buf[0] = cbor_magic_float16;
|
||||||
switch (native_endian) {
|
std.mem.writeInt(u16, buf[1..3], @bitCast(value), .big);
|
||||||
.big => try write(writer, value_bytes),
|
_ = try writer.write(&buf);
|
||||||
.little => {
|
|
||||||
try write(writer, value_bytes[1]);
|
|
||||||
try write(writer, value_bytes[0]);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn writeF32(writer: *Io.Writer, value: f32) Io.Writer.Error!void {
|
fn writeF32(writer: *Io.Writer, value: f32) Io.Writer.Error!void {
|
||||||
try write(writer, cbor_magic_float32);
|
var buf: [5]u8 = undefined;
|
||||||
const value_bytes = std.mem.asBytes(&value);
|
buf[0] = cbor_magic_float32;
|
||||||
switch (native_endian) {
|
std.mem.writeInt(u32, buf[1..5], @bitCast(value), .big);
|
||||||
.big => try write(writer, value_bytes),
|
_ = try writer.write(&buf);
|
||||||
.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]);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn writeF64(writer: *Io.Writer, value: f64) Io.Writer.Error!void {
|
fn writeF64(writer: *Io.Writer, value: f64) Io.Writer.Error!void {
|
||||||
try write(writer, cbor_magic_float64);
|
var buf: [9]u8 = undefined;
|
||||||
const value_bytes = std.mem.asBytes(&value);
|
buf[0] = cbor_magic_float64;
|
||||||
switch (native_endian) {
|
std.mem.writeInt(u64, buf[1..9], @bitCast(value), .big);
|
||||||
.big => try write(writer, value_bytes),
|
_ = try writer.write(&buf);
|
||||||
.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]);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn writeString(writer: *Io.Writer, s: []const u8) Io.Writer.Error!void {
|
fn writeString(writer: *Io.Writer, s: []const u8) Io.Writer.Error!void {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue