;;; -*- Mode:LISP; Package:USER; Base:10 -*- ;;; For input, define :NEXT-INPUT-BUFFER &OPTIONAL NO-HANG-P => ARRAY START END ;;; :DISCARD-INPUT-BUFFER ARRAY ;;; For output, define :NEW-OUTPUT-BUFFER => ARRAY START END ;;; :SEND-OUTPUT-BUFFER ARRAY END ;;; :DISCARD-OUTPUT-BUFFER ARRAY (DEFFLAVOR MY-TEST-STREAM ((KOUNT 3)) (SI:BUFFERED-INPUT-STREAM)) (DEFVAR *X* "FOOBAR ") (DEFMETHOD (MY-TEST-STREAM :NEXT-INPUT-BUFFER) (&OPTIONAL IGNORE) (COND ((ZEROP KOUNT) NIL) ('ELSE (DECF KOUNT) (FORMAT T "~&ALLOCATING AT KOUNT = ~D~%" KOUNT) (VALUES *X* 0 (LENGTH *X*))))) (DEFMETHOD (MY-TEST-STREAM :DISCARD-INPUT-BUFFER) (&OPTIONAL IGNORE) (FORMAT T "~&DISCARDING AT KOUNT = ~D~%" KOUNT)) (COMPILE-FLAVOR-METHODS MY-TEST-STREAM)