GNU Info

Info Node: (guile.info)Soft Ports

(guile.info)Soft Ports


Next: Void Ports Prev: String Ports Up: Port Types
Enter node , (file) or (file)node

Soft Ports
----------

A "soft-port" is a port based on a vector of procedures capable of
accepting or delivering characters.  It allows emulation of I/O ports.

 - primitive: make-soft-port pv modes
     Returns a port capable of receiving or delivering characters as
     specified by the MODES string (Note: open-file.).
     VECTOR must be a vector of length 6.  Its components are as
     follows:

       0. procedure accepting one character for output

       1. procedure accepting a string for output

       2. thunk for flushing output

       3. thunk for getting one character

       4. thunk for closing port (not by garbage collection)

     For an output-only port only elements 0, 1, 2, and 4 need be
     procedures.  For an input-only port only elements 3 and 4 need be
     procedures.  Thunks 2 and 4 can instead be `#f' if there is no
     useful operation for them to perform.

     If thunk 3 returns `#f' or an `eof-object' (*note eof-object?:
     (r4rs)Input.) it indicates that the port has reached end-of-file.
     For example:

          (define stdout (current-output-port))
          (define p (make-soft-port
                     (vector
                      (lambda (c) (write c stdout))
                      (lambda (s) (display s stdout))
                      (lambda () (display "." stdout))
                      (lambda () (char-upcase (read-char)))
                      (lambda () (display "@" stdout)))
                     "rw"))
          
          (write p p) => #<input-output: soft 8081e20>


automatically generated by info2www version 1.2.2.9