ref: c3b5d8f485e8d981d12d7c59386f39125cb3a864
dir: /lib/bio/puti.myr/
use std use "bio" pkg bio = /* unsigned big endian */ generic putbe8 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) generic putbe16 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) generic putbe32 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) generic putbe64 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) /* unsigned little endian */ generic putle8 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) generic putle16 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) generic putle32 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) generic putle64 : (f : file#, v : @a::(numeric,integral) -> status(std.size)) ;; generic putbe8 = {f, v; -> putbe(f, (v : uint64), 1)} generic putbe16 = {f, v; -> putbe(f, (v : uint64), 2)} generic putbe32 = {f, v; -> putbe(f, (v : uint64), 4)} generic putbe64 = {f, v; -> putbe(f, (v : uint64), 8)} generic putle8 = {f, v; -> putle(f, (v : uint64), 1)} generic putle16 = {f, v; -> putle(f, (v : uint64), 2)} generic putle32 = {f, v; -> putle(f, (v : uint64), 4)} generic putle64 = {f, v; -> putle(f, (v : uint64), 8)} const putle = {f, v, n var buf : byte[8] match ensurewrite(f, n) | `Eof: -> `Eof | `Err e: -> `Err e | `Ok _: buf[0] = ((v >> 0) & 0xff : byte) buf[1] = ((v >> 8) & 0xff : byte) buf[2] = ((v >> 16) & 0xff : byte) buf[3] = ((v >> 24) & 0xff : byte) buf[4] = ((v >> 32) & 0xff : byte) buf[5] = ((v >> 40) & 0xff : byte) buf[6] = ((v >> 48) & 0xff : byte) buf[7] = ((v >> 56) & 0xff : byte) -> write(f, buf[:n]) ;; } const putbe = {f, v, n var buf : byte[8] match ensurewrite(f, n) | `Eof: -> `Eof | `Err e: -> `Err e | `Ok _: buf[0] = ((v >> 56) & 0xff : byte) buf[1] = ((v >> 48) & 0xff : byte) buf[2] = ((v >> 40) & 0xff : byte) buf[3] = ((v >> 32) & 0xff : byte) buf[4] = ((v >> 24) & 0xff : byte) buf[5] = ((v >> 16) & 0xff : byte) buf[6] = ((v >> 8) & 0xff : byte) buf[7] = ((v >> 0) & 0xff : byte) -> write(f, buf[8-n:]) ;; }