call-with-bytevector-output-port - call a procedure with a bytevector output port

LIBRARY

(import (rnrs))                     ;R6RS
(import (rnrs io ports))            ;R6RS

SYNOPSIS

(call-with-bytevector-output-port proc)
(call-with-bytevector-output-port proc maybe-transcoder)

DESCRIPTION

Creates an output port that accumulates the bytes written to it and calls proc with that output port as an argument. Whenever proc returns, a bytevector consisting of all of the port's accumulated bytes (regardless of the port’s current position) is returned and the port is closed.

The transcoder associated with the output port is determined as for a call to open-bytevector-output-port(3scm).

RETURN VALUES

Returns a single value; a bytevector.

EXAMPLES

(call-with-bytevector-output-port
  (lambda (p)
    (put-u8 p 7)))
        => #vu8(7)

(call-with-bytevector-output-port
  (lambda (p)
    (put-string p "0123"))
  (native-transcoder))
        => #vu8(48 49 50 51)

APPLICATION USAGE

This procedure is commonly used when creating bytevectors piecemeal.

COMPATIBILITY

This procedure is unique to R6RS. It is a wrapper around open-bytevector-output-port(3scm).

ERRORS

This procedure can raise exceptions with the following condition types:
&assertion (R6RS)
The wrong number of arguments was passed or an argument was outside its domain. In particular, proc must be a procedure that can accept one argument, and maybe-transcoder must be a transcoder or #f.

SEE ALSO

open-bytevector-output-port(3scm), open-bytevector-input-port(3scm)

STANDARDS

R6RS

HISTORY

This procedure is new to the reworked I/O in R6RS.

AUTHORS

This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at https://github.com/schemedoc/manpages/.


Markup created by unroff 1.0sc,    March 04, 2023.