X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/46c7a9ab1e830a9c9ba2d607fdf48ed7554428bb..HEAD:/struct/buf.c diff --git a/struct/buf.c b/struct/buf.c index bd16ec7..11b1425 100644 --- a/struct/buf.c +++ b/struct/buf.c @@ -187,6 +187,34 @@ int buf_putbyte(buf *b, int ch) } DOUINTCONV(BUF_GETU_) +/* --- @buf_getk64{,l,b}@ --- * + * + * Arguments: @buf *b@ = pointer to a buffer block + * @kludge64 *w@ = where to put the word + * + * Returns: Zero if OK, or nonzero if there wasn't a word there. + * + * Use: Gets a word of appropriate size and order from a buffer. + */ + +int buf_getk64(buf *b, kludge64 *w) +{ + if (BENSURE(b, 8)) return (-1); + LOAD64_(*w, b->p); BSTEP(b, 8); return (0); +} + +int buf_getk64l(buf *b, kludge64 *w) +{ + if (BENSURE(b, 8)) return (-1); + LOAD64_L_(*w, b->p); BSTEP(b, 8); return (0); +} + +int buf_getk64b(buf *b, kludge64 *w) +{ + if (BENSURE(b, 8)) return (-1); + LOAD64_B_(*w, b->p); BSTEP(b, 8); return (0); +} + /* --- @buf_putu{8,{16,24,32,64}{,l,b}}@ --- * * * Arguments: @buf *b@ = pointer to a buffer block @@ -207,6 +235,34 @@ DOUINTCONV(BUF_GETU_) } DOUINTCONV(BUF_PUTU_) +/* --- @buf_putk64{,l,b}@ --- * + * + * Arguments: @buf *b@ = pointer to a buffer block + * @kludge64 w@ = word to write + * + * Returns: Zero if OK, or nonzero if there wasn't enough space + * + * Use: Gets a word of appropriate size and order from a buffer. + */ + +int buf_putk64(buf *b, kludge64 w) +{ + if (BENSURE(b, 8)) return (-1); + STORE64_(b->p, w); BSTEP(b, 8); return (0); +} + +int buf_putk64l(buf *b, kludge64 w) +{ + if (BENSURE(b, 8)) return (-1); + STORE64_L_(b->p, w); BSTEP(b, 8); return (0); +} + +int buf_putk64b(buf *b, kludge64 w) +{ + if (BENSURE(b, 8)) return (-1); + STORE64_B_(b->p, w); BSTEP(b, 8); return (0); +} + /* --- @findz@ --- * * * Arguments: @buf *b@ = pointer to a buffer block